diff --git a/play-life-backend/main.go b/play-life-backend/main.go index c803598..c3c05b7 100644 --- a/play-life-backend/main.go +++ b/play-life-backend/main.go @@ -3515,28 +3515,41 @@ func (a *App) moveProjectHandler(w http.ResponseWriter, r *http.Request) { SELECT id FROM projects WHERE name = $1 AND deleted = FALSE `, req.NewName).Scan(&targetProjectID) - var finalProjectID int if err == sql.ErrNoRows { - // Проект не найден - создаем новый - err = tx.QueryRow(` - INSERT INTO projects (name, deleted) - VALUES ($1, FALSE) - RETURNING id - `, req.NewName).Scan(&finalProjectID) + // Проект не найден - просто переименовываем текущий проект + _, err = tx.Exec(` + UPDATE projects + SET name = $1 + WHERE id = $2 + `, req.NewName, req.ID) if err != nil { - log.Printf("Error creating new project: %v", err) - sendErrorWithCORS(w, fmt.Sprintf("Error creating new project: %v", err), http.StatusInternalServerError) + log.Printf("Error renaming project: %v", err) + sendErrorWithCORS(w, fmt.Sprintf("Error renaming project: %v", err), http.StatusInternalServerError) return } + + // Коммитим транзакцию + if err := tx.Commit(); err != nil { + log.Printf("Error committing transaction: %v", err) + sendErrorWithCORS(w, fmt.Sprintf("Error committing transaction: %v", err), http.StatusInternalServerError) + return + } + + w.Header().Set("Content-Type", "application/json") + json.NewEncoder(w).Encode(map[string]interface{}{ + "message": "Project renamed successfully", + "project_id": req.ID, + }) + return } else if err != nil { log.Printf("Error querying target project: %v", err) sendErrorWithCORS(w, fmt.Sprintf("Error querying target project: %v", err), http.StatusInternalServerError) return - } else { - // Проект найден - используем его ID - finalProjectID = targetProjectID } + // Проект найден - переносим данные в существующий проект + finalProjectID := targetProjectID + // Обновляем все nodes с project_id на целевой _, err = tx.Exec(` UPDATE nodes