Files
History_Api/db/query/entities.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

67 lines
1.8 KiB
SQL

-- name: CreateEntity :one
INSERT INTO entities (
id, name, slug, description, project_id, status, time_start, time_end
) VALUES (
COALESCE(sqlc.narg('id')::uuid, uuidv7()), $1, $2, $3, $4, $5, $6, $7
)
RETURNING *;
-- name: GetEntityById :one
SELECT *
FROM entities
WHERE id = $1 AND is_deleted = false;
-- name: UpdateEntity :one
UPDATE entities
SET
name = COALESCE(sqlc.narg('name'), name),
slug = COALESCE(sqlc.narg('slug'), slug),
description = COALESCE(sqlc.narg('description'), description),
project_id = COALESCE(sqlc.narg('project_id'), project_id),
status = COALESCE(sqlc.narg('status'), status),
time_start = COALESCE(sqlc.narg('time_start'), time_start),
time_end = COALESCE(sqlc.narg('time_end'), time_end)
WHERE id = sqlc.arg('id') AND is_deleted = false
RETURNING *;
-- name: DeleteEntity :exec
UPDATE entities
SET
is_deleted = true
WHERE id = $1;
-- name: SearchEntities :many
SELECT *
FROM entities
WHERE is_deleted = false
AND (sqlc.narg('project_id')::uuid IS NULL OR project_id = sqlc.narg('project_id')::uuid)
AND (sqlc.narg('name')::text IS NULL OR name ILIKE '%' || sqlc.narg('name')::text || '%')
AND (
sqlc.narg('time_point')::int IS NULL OR
int4range(time_start, time_end, '[]') @> sqlc.narg('time_point')::int
)
AND (sqlc.narg('cursor_id')::uuid IS NULL OR id < sqlc.narg('cursor_id')::uuid)
ORDER BY id DESC
LIMIT sqlc.arg('limit_count');
-- name: GetEntitiesByIDs :many
SELECT * FROM entities WHERE id = ANY($1::uuid[]) AND is_deleted = false;
-- name: GetEntitiesByProjectId :many
SELECT *
FROM entities
WHERE project_id = $1 AND is_deleted = false;
-- name: DeleteEntitiesByIDs :exec
UPDATE entities
SET is_deleted = true
WHERE id = ANY($1::uuid[]);
-- name: GetEntityBySlug :one
SELECT *
FROM entities
WHERE slug = $1 AND is_deleted = false;