func (as SqlOAuthStore) deleteOAuthTokens(transaction *gorp.Transaction, clientId string) StoreResult { result := StoreResult{} if _, err := transaction.Exec("DELETE FROM OAuthAccessData WHERE ClientId = :Id", map[string]interface{}{"Id": clientId}); err != nil { result.Err = model.NewLocAppError("SqlOAuthStore.DeleteApp", "store.sql_oauth.delete_app.app_error", nil, "id="+clientId+", err="+err.Error()) return result } return as.deleteAppExtras(transaction, clientId) }
func (s SqlPreferenceStore) save(transaction *gorp.Transaction, preference *model.Preference) StoreResult { result := StoreResult{} preference.PreUpdate() if result.Err = preference.IsValid(); result.Err != nil { return result } params := map[string]interface{}{ "UserId": preference.UserId, "Category": preference.Category, "Name": preference.Name, "Value": preference.Value, } if utils.Cfg.SqlSettings.DriverName == model.DATABASE_DRIVER_MYSQL { if _, err := transaction.Exec( `INSERT INTO Preferences (UserId, Category, Name, Value) VALUES (:UserId, :Category, :Name, :Value) ON DUPLICATE KEY UPDATE Value = :Value`, params); err != nil { result.Err = model.NewLocAppError("SqlPreferenceStore.save", "store.sql_preference.save.updating.app_error", nil, err.Error()) } } else if utils.Cfg.SqlSettings.DriverName == model.DATABASE_DRIVER_POSTGRES { // postgres has no way to upsert values until version 9.5 and trying inserting and then updating causes transactions to abort count, err := transaction.SelectInt( `SELECT count(0) FROM Preferences WHERE UserId = :UserId AND Category = :Category AND Name = :Name`, params) if err != nil { result.Err = model.NewLocAppError("SqlPreferenceStore.save", "store.sql_preference.save.updating.app_error", nil, err.Error()) return result } if count == 1 { s.update(transaction, preference) } else { s.insert(transaction, preference) } } else { result.Err = model.NewLocAppError("SqlPreferenceStore.save", "store.sql_preference.save.missing_driver.app_error", nil, "Failed to update preference because of missing driver") } return result }
func deleteReactionAndUpdatePost(transaction *gorp.Transaction, reaction *model.Reaction) error { if _, err := transaction.Exec( `DELETE FROM Reactions WHERE PostId = :PostId AND UserId = :UserId AND EmojiName = :EmojiName`, map[string]interface{}{"PostId": reaction.PostId, "UserId": reaction.UserId, "EmojiName": reaction.EmojiName}); err != nil { return err } return updatePostForReactions(transaction, reaction.PostId) }
func (as SqlOAuthStore) deleteAppExtras(transaction *gorp.Transaction, clientId string) StoreResult { result := StoreResult{} if _, err := transaction.Exec( `DELETE FROM Preferences WHERE Category = :Category AND Name = :Name`, map[string]interface{}{"Category": model.PREFERENCE_CATEGORY_AUTHORIZED_OAUTH_APP, "Name": clientId}); err != nil { result.Err = model.NewLocAppError("SqlOAuthStore.DeleteApp", "store.sql_preference.delete.app_error", nil, err.Error()) return result } return result }
func executeSql(trans *gorp.Transaction, tableName string, status Store, tableCtx Store) { for k, v := range status { switch v.(int) { case STATUS_UPDATE: fmt.Println("STATUS_UPDATE: ", reflect.ValueOf(tableCtx[k]).Elem().FieldByName("Data").Interface()) _, err := trans.Update(reflect.ValueOf(tableCtx[k]).Elem().FieldByName("Data").Interface()) if err != nil { panic(err.Error()) } case STATUS_DELETE: _, err := trans.Exec(fmt.Sprintf("DELETE FROM `%s` WHERE `uuid`='%s'", tableName, k)) if err != nil { panic(err.Error()) } case STATUS_CREATE: err := trans.Insert(reflect.ValueOf(tableCtx[k]).Elem().FieldByName("Data").Interface()) if err != nil { panic(err.Error()) } } } }
func updatePostForReactions(transaction *gorp.Transaction, postId string) error { _, err := transaction.Exec(UPDATE_POST_HAS_REACTIONS_QUERY, map[string]interface{}{"PostId": postId, "UpdateAt": model.GetMillis()}) return err }