4.0.3: Исправлен user_id в weekly_goals
All checks were successful
Build and Push Docker Image / build-and-push (push) Successful in 1m34s

This commit is contained in:
poignatov
2026-01-26 18:05:20 +03:00
parent 08cc20265e
commit 99156d578a
5 changed files with 27 additions and 8 deletions

View File

@@ -4345,7 +4345,8 @@ func (a *App) setupWeeklyGoals() error {
min_goal_score,
max_goal_score,
max_score,
priority
priority,
user_id
)
SELECT
p.id,
@@ -4367,7 +4368,8 @@ func (a *App) setupWeeklyGoals() error {
WHEN p.priority = 2 THEN gm.median_score * 1.3
ELSE gm.median_score * 1.2
END AS max_score,
p.priority
p.priority,
p.user_id
FROM projects p
CROSS JOIN current_info ci
LEFT JOIN goal_metrics gm ON p.id = gm.project_id
@@ -4376,7 +4378,8 @@ func (a *App) setupWeeklyGoals() error {
SET
min_goal_score = EXCLUDED.min_goal_score,
max_goal_score = EXCLUDED.max_goal_score,
priority = EXCLUDED.priority
priority = EXCLUDED.priority,
user_id = EXCLUDED.user_id
`
_, err := a.DB.Exec(setupQuery)
@@ -5090,10 +5093,13 @@ func (a *App) moveProjectHandler(w http.ResponseWriter, r *http.Request) {
}
// Теперь обновляем оставшиеся записи (те, которые не конфликтуют)
// Обновляем project_id и user_id из целевого проекта
_, err = tx.Exec(`
UPDATE weekly_goals
SET project_id = $1
WHERE project_id = $2
UPDATE weekly_goals wg
SET project_id = $1, user_id = p.user_id
FROM projects p
WHERE wg.project_id = $2
AND p.id = $1
`, finalProjectID, req.ID)
if err != nil {
log.Printf("Error updating weekly_goals: %v", err)

View File

@@ -0,0 +1,4 @@
-- Rollback migration: This migration cannot be automatically rolled back
-- The user_id values were corrected from projects.user_id, so reverting would
-- require knowing the original incorrect values, which is not possible.
-- If rollback is needed, you would need to manually restore from a backup.

View File

@@ -0,0 +1,9 @@
-- Migration: Fix weekly_goals.user_id by updating it from projects.user_id
-- This migration fixes the issue where weekly_goals.user_id was incorrectly set to NULL or wrong user_id
-- It updates all weekly_goals records to have the correct user_id from their associated project
UPDATE weekly_goals wg
SET user_id = p.user_id
FROM projects p
WHERE wg.project_id = p.id
AND (wg.user_id IS NULL OR wg.user_id != p.user_id);