From 0120fb8414c45fa7927bf3b54158102ed6c02c60 Mon Sep 17 00:00:00 2001 From: gearnode Date: Sun, 16 Mar 2025 18:25:17 +0100 Subject: [PATCH] Fix cannot delete task Signed-off-by: gearnode --- pkg/coredata/task.go | 66 ++++---------------------------------------- 1 file changed, 5 insertions(+), 61 deletions(-) diff --git a/pkg/coredata/task.go b/pkg/coredata/task.go index f7b1bd7ad..65f32778c 100644 --- a/pkg/coredata/task.go +++ b/pkg/coredata/task.go @@ -303,68 +303,12 @@ func (t *Task) Delete( conn pg.Conn, scope Scoper, ) error { - q := ` -WITH control_count AS ( - SELECT COUNT(*) AS count FROM controls_tasks WHERE task_id = @task_id -), -delete_link AS ( - DELETE FROM controls_tasks - WHERE task_id = @task_id AND control_id = @control_id - RETURNING task_id -), -delete_transitions AS ( - DELETE FROM task_state_transitions - WHERE %s AND task_id = @task_id AND (SELECT count FROM control_count) <= 1 - RETURNING task_id -), -delete_all_links AS ( - DELETE FROM controls_tasks - WHERE task_id = @task_id AND (SELECT count FROM control_count) <= 1 - RETURNING task_id -), -delete_task AS ( - DELETE FROM tasks - WHERE %s AND id = @task_id AND (SELECT count FROM control_count) <= 1 - RETURNING id -) -SELECT - (SELECT count FROM control_count) AS control_count, - (SELECT COUNT(*) FROM delete_link) AS deleted_links, - (SELECT COUNT(*) FROM delete_transitions) AS deleted_transitions, - (SELECT COUNT(*) FROM delete_all_links) AS deleted_all_links, - (SELECT COUNT(*) FROM delete_task) AS deleted_tasks; -` - q = fmt.Sprintf(q, scope.SQLFragment(), scope.SQLFragment()) + q := `DELETE FROM tasks WHERE %s AND id = @task_id` + q = fmt.Sprintf(q, scope.SQLFragment()) - args := pgx.StrictNamedArgs{ - "task_id": t.ID, - "control_id": t.ControlID, - } + args := pgx.StrictNamedArgs{"task_id": t.ID} maps.Copy(args, scope.SQLArguments()) - var controlCount, deletedLinks, deletedTransitions, deletedAllLinks, deletedTasks int - err := conn.QueryRow(ctx, q, args).Scan( - &controlCount, - &deletedLinks, - &deletedTransitions, - &deletedAllLinks, - &deletedTasks, - ) - - if err != nil { - return fmt.Errorf("cannot execute delete operation: %w", err) - } - - if controlCount <= 1 { - if deletedTransitions == 0 || deletedAllLinks == 0 || deletedTasks == 0 { - return fmt.Errorf("failed to delete task completely: transitions=%d, links=%d, tasks=%d", - deletedTransitions, deletedAllLinks, deletedTasks) - } - } else { - if deletedLinks == 0 { - return fmt.Errorf("failed to delete control-task link") - } - } - - return nil + _, err := conn.Exec(ctx, q, args) + return err }