Files
History_Api/db/query/files.sql
AzenKain 677ae95c8f
All checks were successful
Build and Release / release (push) Successful in 1m25s
UPDATE: Something with module search
2026-04-07 17:45:39 +07:00

62 lines
1.5 KiB
SQL

-- name: CreateMedia :one
INSERT INTO medias (
user_id, storage_key, original_name, mime_type, size, file_metadata
) VALUES (
$1, $2, $3, $4, $5, $6
)
RETURNING *;
-- name: DeleteMedia :exec
DELETE FROM medias
WHERE id = $1;
-- name: SearchMedias :many
SELECT *
FROM medias
WHERE
(sqlc.narg('cursor')::uuid IS NULL OR id > sqlc.narg('cursor')::uuid)
AND (
sqlc.narg('search_text')::text IS NULL OR
original_name ILIKE '%' || sqlc.narg('search_text')::text || '%' OR
storage_key ILIKE '%' || sqlc.narg('search_text')::text || '%'
)
ORDER BY
-- id
CASE
WHEN sqlc.narg('sort') = 'id' AND sqlc.narg('order') = 'asc' THEN id
END ASC,
CASE
WHEN sqlc.narg('sort') = 'id' AND sqlc.narg('order') = 'desc' THEN id
END DESC,
-- created_at
CASE
WHEN sqlc.narg('sort') = 'created_at' AND sqlc.narg('order') = 'asc' THEN created_at
END ASC,
CASE
WHEN sqlc.narg('sort') = 'created_at' AND sqlc.narg('order') = 'desc' THEN created_at
END DESC,
-- updated_at
CASE
WHEN sqlc.narg('sort') = 'updated_at' AND sqlc.narg('order') = 'asc' THEN updated_at
END ASC,
CASE
WHEN sqlc.narg('sort') = 'updated_at' AND sqlc.narg('order') = 'desc' THEN updated_at
END DESC,
-- fallback
id ASC
LIMIT sqlc.arg('limit');
-- name: GetMediasByUserID :many
SELECT * FROM medias
WHERE user_id = $1
ORDER BY created_at DESC;
-- name: GetMediaByID :one
SELECT * FROM medias
WHERE id = $1;