Исправление сохранения reward_policy для задач-желаний
All checks were successful
Build and Push Docker Image / build-and-push (push) Successful in 1m7s

This commit is contained in:
poignatov
2026-01-21 18:57:47 +03:00
parent 068794a98c
commit d0d1cbd8cb
4 changed files with 13 additions and 5 deletions

View File

@@ -7195,6 +7195,9 @@ func (a *App) getTaskDetailHandler(w http.ResponseWriter, r *http.Request) {
configIDInt := int(configID.Int64)
task.ConfigID = &configIDInt
}
if rewardPolicy.Valid {
task.RewardPolicy = &rewardPolicy.String
}
// Получаем награды основной задачи
rewards := make([]Reward, 0)
@@ -7932,16 +7935,19 @@ func (a *App) updateTaskHandler(w http.ResponseWriter, r *http.Request) {
// Подготовка reward_policy: если задача связана с желанием и политика не указана, используем "personal" по умолчанию
var rewardPolicyValue interface{}
if newWishlistID != nil {
// Если reward_policy явно указан в запросе, используем его
if req.RewardPolicy != nil && (*req.RewardPolicy == "personal" || *req.RewardPolicy == "general") {
rewardPolicyValue = *req.RewardPolicy
} else {
// Если задача уже была привязана, сохраняем текущую политику, иначе используем "personal"
} else if req.RewardPolicy == nil {
// Если reward_policy не указан в запросе (undefined), сохраняем текущее значение из БД
// Это важно для случаев, когда обновляются другие поля, но reward_policy не должен меняться
var currentRewardPolicy sql.NullString
err = a.DB.QueryRow("SELECT reward_policy FROM tasks WHERE id = $1", taskID).Scan(&currentRewardPolicy)
if err == nil && currentRewardPolicy.Valid {
rewardPolicyValue = currentRewardPolicy.String
} else {
rewardPolicyValue = "personal" // Значение по умолчанию для задач, связанных с желаниями
// Если в БД нет значения, используем "personal" по умолчанию
rewardPolicyValue = "personal"
}
}
} else {