mirror of
https://github.com/Sosokker/go-chi-oapi-codegen-todolist.git
synced 2025-12-19 14:04:07 +01:00
36 lines
1.2 KiB
SQL
36 lines
1.2 KiB
SQL
-- name: CreateSubtask :one
|
|
INSERT INTO subtasks (todo_id, description, completed)
|
|
VALUES ($1, $2, $3)
|
|
RETURNING *;
|
|
|
|
-- name: GetSubtaskByID :one
|
|
-- We need to join to check ownership via the parent todo
|
|
SELECT s.* FROM subtasks s
|
|
JOIN todos t ON s.todo_id = t.id
|
|
WHERE s.id = $1 AND t.user_id = $2 LIMIT 1;
|
|
|
|
-- name: ListSubtasksForTodo :many
|
|
SELECT s.* FROM subtasks s
|
|
JOIN todos t ON s.todo_id = t.id
|
|
WHERE s.todo_id = $1 AND t.user_id = $2
|
|
ORDER BY s.created_at ASC;
|
|
|
|
-- name: UpdateSubtask :one
|
|
-- Need to join to check ownership before updating
|
|
UPDATE subtasks s
|
|
SET
|
|
description = COALESCE(sqlc.narg(description), s.description),
|
|
completed = COALESCE(sqlc.narg(completed), s.completed)
|
|
FROM todos t -- Include todos table in FROM clause for WHERE condition
|
|
WHERE s.id = $1 AND s.todo_id = t.id AND t.user_id = $2
|
|
RETURNING s.*; -- Return columns from subtasks (aliased as s)
|
|
|
|
-- name: DeleteSubtask :exec
|
|
-- Need owner check before deleting
|
|
DELETE FROM subtasks s
|
|
USING todos t
|
|
WHERE s.id = $1 AND s.todo_id = t.id AND t.user_id = $2;
|
|
|
|
-- name: GetTodoIDForSubtask :one
|
|
-- Helper to get parent todo ID for authorization checks in service layer if needed
|
|
SELECT todo_id FROM subtasks WHERE id = $1; |