func (s SqlTokenStore) Save(token *model.Token) store.StoreChannel {
return store.Do(func(result *store.StoreResult) {
if result.Err = token.IsValid(); result.Err != nil {
return
}
if err := s.GetMaster().Insert(token); err != nil {
result.Err = model.NewAppError("SqlTokenStore.Save", "store.sql_recover.save.app_error", nil, "", http.StatusInternalServerError)
}
})
}
Just like
func (s SqlTokenStore) Save(token *model.Token) store.StoreChannel {return store.Do(func(result *store.StoreResult) {if result.Err = token.IsValid(); result.Err != nil {return}if err := s.GetMaster().Insert(token); err != nil {result.Err = model.NewAppError("SqlTokenStore.Save", "store.sql_recover.save.app_error", nil, "", http.StatusInternalServerError)}})}
by use
type StoreChannel chan StoreResult
func Do(f func(result *StoreResult)) StoreChannel {
storeChannel := make(StoreChannel, 1)
go func() {
result := StoreResult{}
f(&result)
storeChannel <- result
close(storeChannel)
}()
return storeChannel
}
for upon , return interface