Files
History_Api/db/query/wiki.sql
AzenKain 29944915cd
All checks were successful
Build and Release / release (push) Successful in 1m30s
UPDATE: new db
2026-05-05 16:57:44 +07:00

93 lines
2.1 KiB
SQL

-- name: CreateWiki :one
INSERT INTO wikis (
id, title, slug, content, project_id
) VALUES (
COALESCE(sqlc.narg('id')::uuid, uuidv7()), $1, $2, $3, $4
)
RETURNING *;
-- name: GetWikiById :one
SELECT *
FROM wikis
WHERE id = $1 AND is_deleted = false;
-- name: UpdateWiki :one
UPDATE wikis
SET
title = COALESCE(sqlc.narg('title'), title),
slug = COALESCE(sqlc.narg('slug'), slug),
content = COALESCE(sqlc.narg('content'), content),
project_id = COALESCE(sqlc.narg('project_id'), project_id)
WHERE id = sqlc.arg('id') AND is_deleted = false
RETURNING *;
-- name: DeleteWiki :exec
UPDATE wikis
SET
is_deleted = true
WHERE id = $1;
-- name: SearchWikis :many
SELECT w.*
FROM wikis w
WHERE w.is_deleted = false
AND (sqlc.narg('project_id')::uuid IS NULL OR w.project_id = sqlc.narg('project_id')::uuid)
AND w.title ILIKE '%' || sqlc.arg('title')::text || '%'
AND (
sqlc.narg('entity_id')::uuid IS NULL OR
EXISTS (
SELECT 1
FROM entity_wikis ew
WHERE ew.wiki_id = w.id
AND ew.entity_id = sqlc.narg('entity_id')::uuid
)
)
AND (sqlc.narg('cursor_id')::uuid IS NULL OR w.id < sqlc.narg('cursor_id')::uuid)
ORDER BY w.id DESC
LIMIT sqlc.arg('limit_count');
-- name: BulkDeleteEntityWikisByEntityId :many
DELETE FROM entity_wikis
WHERE entity_id = $1
RETURNING wiki_id;
-- name: CreateEntityWikis :exec
INSERT INTO entity_wikis (
entity_id, wiki_id, project_id
)
SELECT $1, unnest(@wiki_ids::uuid[]), $2
ON CONFLICT DO NOTHING;
-- name: DeleteEntityWikisByProjectID :exec
DELETE FROM entity_wikis
WHERE project_id = $1;
-- name: GetWikisByIDs :many
SELECT * FROM wikis WHERE id = ANY($1::uuid[]) AND is_deleted = false;
-- name: GetWikisByProjectId :many
SELECT *
FROM wikis
WHERE project_id = $1 AND is_deleted = false;
-- name: DeleteWikisByIDs :exec
UPDATE wikis
SET is_deleted = true
WHERE id = ANY($1::uuid[]);
-- name: BulkDeleteEntityWikisByWikiID :exec
DELETE FROM entity_wikis
WHERE wiki_id = $1;
-- name: DeleteEntityWiki :exec
DELETE FROM entity_wikis
WHERE entity_id = $1 AND wiki_id = $2;
-- name: GetWikiBySlug :one
SELECT *
FROM wikis
WHERE slug = $1 AND is_deleted = false;