Skip to content

Instantly share code, notes, and snippets.

@abserari
Created June 12, 2019 19:30
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save abserari/99fcb5e038ee60fb3a668962c75552f7 to your computer and use it in GitHub Desktop.
Save abserari/99fcb5e038ee60fb3a668962c75552f7 to your computer and use it in GitHub Desktop.
Good for Code
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
}
@abserari
Copy link
Author

for upon , return interface

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment