47 lines
1.9 KiB
SQL
47 lines
1.9 KiB
SQL
-- name: ListDiscussionMessagesByTablo :many
|
|
SELECT discussion_messages.id,
|
|
discussion_messages.tablo_id,
|
|
discussion_messages.author_user_id,
|
|
users.email AS author_email,
|
|
discussion_messages.body,
|
|
discussion_messages.created_at,
|
|
discussion_messages.updated_at,
|
|
discussion_messages.edited_at,
|
|
discussion_messages.edited_by_user_id,
|
|
discussion_messages.deleted_at,
|
|
discussion_messages.deleted_by_user_id
|
|
FROM discussion_messages
|
|
JOIN users ON users.id = discussion_messages.author_user_id
|
|
WHERE discussion_messages.tablo_id = $1
|
|
ORDER BY discussion_messages.created_at, discussion_messages.id;
|
|
|
|
-- name: CreateDiscussionMessage :one
|
|
INSERT INTO discussion_messages (tablo_id, author_user_id, body)
|
|
VALUES ($1, $2, $3)
|
|
RETURNING id, tablo_id, author_user_id, body, created_at, updated_at, edited_at, edited_by_user_id, deleted_at, deleted_by_user_id;
|
|
|
|
-- name: GetDiscussionMessageWithAuthor :one
|
|
SELECT discussion_messages.id,
|
|
discussion_messages.tablo_id,
|
|
discussion_messages.author_user_id,
|
|
users.email AS author_email,
|
|
discussion_messages.body,
|
|
discussion_messages.created_at,
|
|
discussion_messages.updated_at,
|
|
discussion_messages.edited_at,
|
|
discussion_messages.edited_by_user_id,
|
|
discussion_messages.deleted_at,
|
|
discussion_messages.deleted_by_user_id
|
|
FROM discussion_messages
|
|
JOIN users ON users.id = discussion_messages.author_user_id
|
|
WHERE discussion_messages.id = $1
|
|
AND discussion_messages.tablo_id = $2;
|
|
|
|
-- name: UpsertDiscussionReadState :one
|
|
INSERT INTO discussion_read_states (tablo_id, user_id, last_read_message_id, last_read_at)
|
|
VALUES ($1, $2, $3, now())
|
|
ON CONFLICT (tablo_id, user_id)
|
|
DO UPDATE SET last_read_message_id = EXCLUDED.last_read_message_id,
|
|
last_read_at = now(),
|
|
updated_at = now()
|
|
RETURNING tablo_id, user_id, last_read_message_id, last_read_at, created_at, updated_at;
|