Files

48 lines
1.2 KiB
SQL

-- name: InsertMessage :one
INSERT INTO messages (conversation_id, role, content, status)
VALUES ($1, $2, $3, $4)
RETURNING *;
-- name: GetMessage :one
SELECT * FROM messages WHERE id = $1;
-- name: ListMessagesByConversation :many
SELECT * FROM messages
WHERE conversation_id = $1
AND ($2::bigint = 0 OR id < $2)
ORDER BY id DESC
LIMIT $3;
-- name: ListMessagesAscending :many
SELECT * FROM messages WHERE conversation_id = $1 ORDER BY id ASC;
-- name: UpdateMessageOK :exec
UPDATE messages
SET content = $2, thinking = $3,
prompt_tokens = $4, completion_tokens = $5, thinking_tokens = $6,
status = 'ok', updated_at = NOW()
WHERE id = $1;
-- name: UpdateMessageError :exec
UPDATE messages
SET status = 'error', error_message = $2, updated_at = NOW()
WHERE id = $1;
-- name: UpdateMessageCancelled :exec
UPDATE messages
SET status = 'cancelled', updated_at = NOW()
WHERE id = $1;
-- name: DeleteMessage :exec
DELETE FROM messages WHERE id = $1;
-- name: GetFirstUserMessage :one
SELECT * FROM messages
WHERE conversation_id = $1 AND role = 'user'
ORDER BY id ASC LIMIT 1;
-- name: MarkPendingAsErrorOnStartup :exec
UPDATE messages
SET status = 'error', error_message = 'server restart', updated_at = NOW()
WHERE status = 'pending';