AI-News/backend/app/db/queries/sql/comments.sql
2025-12-04 10:04:21 +08:00

41 lines
1.2 KiB
SQL

-- name: get-comments-for-article-by-slug
SELECT c.id,
c.body,
c.created_at,
c.updated_at,
(SELECT username FROM users WHERE id = c.author_id) as author_username
FROM commentaries c
INNER JOIN articles a ON c.article_id = a.id AND (a.slug = :slug);
-- name: get-comment-by-id-and-slug^
SELECT c.id,
c.body,
c.created_at,
c.updated_at,
(SELECT username FROM users WHERE id = c.author_id) as author_username
FROM commentaries c
INNER JOIN articles a ON c.article_id = a.id AND (a.slug = :article_slug)
WHERE c.id = :comment_id;
-- name: create-new-comment<!
WITH users_subquery AS (
(SELECT id, username FROM users WHERE username = :author_username)
)
INSERT
INTO commentaries (body, author_id, article_id)
VALUES (:body,
(SELECT id FROM users_subquery),
(SELECT id FROM articles WHERE slug = :article_slug))
RETURNING
id,
body,
(SELECT username FROM users_subquery) AS author_username,
created_at,
updated_at;
-- name: delete-comment-by-id!
DELETE
FROM commentaries
WHERE id = :comment_id
AND author_id = (SELECT id FROM users WHERE username = :author_username);