Files
2026-06-22 08:55:57 +08:00

39 lines
1.5 KiB
SQL

-- The embedding (vector) column is excluded from sqlc queries (no native pgvector
-- type). Write sets embedding via a hand-written pgx UPDATE; vector KNN search is
-- hand-written in repository.go. These queries cover the non-vector path.
-- name: InsertEntry :one
INSERT INTO project_memory (
id, project_id, workspace_id, kind, title, body, tags, source,
embedding_model, created_by
) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10)
RETURNING id, project_id, workspace_id, kind, title, body, tags, source,
embedding_model, created_by, created_at, updated_at;
-- name: GetEntry :one
SELECT id, project_id, workspace_id, kind, title, body, tags, source,
embedding_model, created_by, created_at, updated_at
FROM project_memory
WHERE id = $1;
-- name: ListByProject :many
SELECT id, project_id, workspace_id, kind, title, body, tags, source,
embedding_model, created_by, created_at, updated_at
FROM project_memory
WHERE project_id = $1
AND ($2::text = '' OR kind = $2)
ORDER BY kind ASC, created_at DESC;
-- name: SearchByKeyword :many
SELECT id, project_id, workspace_id, kind, title, body, tags, source,
embedding_model, created_by, created_at, updated_at
FROM project_memory
WHERE project_id = $1
AND ($2::text = '' OR kind = $2)
AND ($3::text = '' OR title ILIKE '%' || $3 || '%' OR body ILIKE '%' || $3 || '%' OR $3 = ANY(tags))
ORDER BY updated_at DESC
LIMIT $4;
-- name: DeleteEntry :exec
DELETE FROM project_memory WHERE id = $1;