You've already forked agentic-coding-workflow
48 lines
1.2 KiB
SQL
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';
|