34 lines
922 B
SQL

-- name: FolderCreate :one
INSERT INTO folders (id, name)
VALUES (sqlc.arg('id'), sqlc.arg('name'))
RETURNING id, name, created_at;
-- name: FolderList :many
SELECT id, name, created_at
FROM folders
ORDER BY name ASC;
-- name: FolderDelete :exec
DELETE FROM folders WHERE id = sqlc.arg('id');
-- name: FolderAddTodo :exec
INSERT INTO folders_todos (folder_id, todo_id)
VALUES (sqlc.arg('folder_id'), sqlc.arg('todo_id'));
-- name: FolderRemoveTodo :exec
DELETE FROM folders_todos
WHERE folder_id = sqlc.arg('folder_id')
AND todo_id = sqlc.arg('todo_id');
-- name: FolderGetByName :one
SELECT id, name, created_at
FROM folders
WHERE name = sqlc.arg('name');
-- name: FolderTodos :many
SELECT t.id, t.title, t.status, t.completed_at, t.priority, t.created_at, t.updated_at
FROM todos t
JOIN folders_todos ft ON ft.todo_id = t.id
WHERE ft.folder_id = sqlc.arg('folder_id')
ORDER BY t.priority DESC, t.created_at ASC;