-- name: CreateAttachment :one INSERT INTO attachment ( id, workspace_id, issue_id, comment_id, chat_session_id, uploader_type, uploader_id, filename, url, content_type, size_bytes ) VALUES ( $1, $2, sqlc.narg(issue_id), sqlc.narg(comment_id), sqlc.narg(chat_session_id), $3, $4, $5, $6, $7, $8 ) RETURNING *; -- name: ListAttachmentsByIssue :many SELECT * FROM attachment WHERE issue_id = $1 AND workspace_id = $2 ORDER BY created_at ASC; -- name: ListAttachmentsByComment :many SELECT * FROM attachment WHERE comment_id = $1 AND workspace_id = $2 ORDER BY created_at ASC; -- name: GetAttachment :one SELECT * FROM attachment WHERE id = $1 AND workspace_id = $2; -- name: GetAttachmentByIDOnly :one -- Used by the download endpoint, which derives workspace context from the -- attachment row itself rather than from request headers/query params. The -- caller still has to verify the requester is a member of the returned -- workspace_id before serving the bytes — this query is access-neutral on -- purpose so a self-contained URL like /api/attachments/{id}/download can -- work as a native /