97 lines
3.3 KiB
SQL
97 lines
3.3 KiB
SQL
-- name: ListImageAssets :many
|
|
SELECT id, tenant_id, brand_id, folder_id, object_key, name, size_bytes, status, created_by, created_at, updated_at
|
|
FROM image_assets
|
|
WHERE tenant_id = sqlc.arg(tenant_id)
|
|
AND brand_id = sqlc.arg(brand_id)
|
|
AND status = 'active'
|
|
AND deleted_at IS NULL
|
|
AND (
|
|
sqlc.narg(folder_id)::BIGINT IS NULL
|
|
OR (sqlc.narg(folder_id)::BIGINT = 0 AND folder_id IS NULL)
|
|
OR folder_id = sqlc.narg(folder_id)::BIGINT
|
|
)
|
|
AND (sqlc.narg(search_query)::TEXT IS NULL OR name ILIKE '%' || sqlc.narg(search_query)::TEXT || '%')
|
|
ORDER BY created_at DESC
|
|
LIMIT sqlc.arg(page_size) OFFSET sqlc.arg(page_offset);
|
|
|
|
-- name: CountImageAssets :one
|
|
SELECT COUNT(*)::INT AS total
|
|
FROM image_assets
|
|
WHERE tenant_id = sqlc.arg(tenant_id)
|
|
AND brand_id = sqlc.arg(brand_id)
|
|
AND status = 'active'
|
|
AND deleted_at IS NULL
|
|
AND (
|
|
sqlc.narg(folder_id)::BIGINT IS NULL
|
|
OR (sqlc.narg(folder_id)::BIGINT = 0 AND folder_id IS NULL)
|
|
OR folder_id = sqlc.narg(folder_id)::BIGINT
|
|
)
|
|
AND (sqlc.narg(search_query)::TEXT IS NULL OR name ILIKE '%' || sqlc.narg(search_query)::TEXT || '%');
|
|
|
|
-- name: GetImageAsset :one
|
|
SELECT id, tenant_id, brand_id, folder_id, object_key, name, size_bytes, status, created_by, created_at, updated_at
|
|
FROM image_assets
|
|
WHERE id = sqlc.arg(id)
|
|
AND tenant_id = sqlc.arg(tenant_id)
|
|
AND brand_id = sqlc.arg(brand_id);
|
|
|
|
-- name: InsertImageAsset :one
|
|
INSERT INTO image_assets (tenant_id, brand_id, folder_id, object_key, name, size_bytes, status, created_by)
|
|
VALUES (sqlc.arg(tenant_id), sqlc.arg(brand_id), sqlc.narg(folder_id), sqlc.arg(object_key), sqlc.arg(name), sqlc.arg(size_bytes), sqlc.arg(status), sqlc.arg(created_by))
|
|
RETURNING id;
|
|
|
|
-- name: UpdateImageAssetStatus :exec
|
|
UPDATE image_assets
|
|
SET status = sqlc.arg(status), updated_at = NOW()
|
|
WHERE id = sqlc.arg(id)
|
|
AND tenant_id = sqlc.arg(tenant_id)
|
|
AND brand_id = sqlc.arg(brand_id);
|
|
|
|
-- name: UpdateImageAssetDeleted :exec
|
|
UPDATE image_assets
|
|
SET status = 'deleted', deleted_at = NOW(), updated_at = NOW()
|
|
WHERE id = sqlc.arg(id)
|
|
AND tenant_id = sqlc.arg(tenant_id)
|
|
AND brand_id = sqlc.arg(brand_id);
|
|
|
|
-- name: UpdateImageAssetName :exec
|
|
UPDATE image_assets
|
|
SET name = sqlc.arg(name), updated_at = NOW()
|
|
WHERE id = sqlc.arg(id)
|
|
AND tenant_id = sqlc.arg(tenant_id)
|
|
AND brand_id = sqlc.arg(brand_id);
|
|
|
|
-- name: UpdateImageAssetFolder :exec
|
|
UPDATE image_assets
|
|
SET folder_id = sqlc.narg(folder_id), updated_at = NOW()
|
|
WHERE id = sqlc.arg(id)
|
|
AND tenant_id = sqlc.arg(tenant_id)
|
|
AND brand_id = sqlc.arg(brand_id);
|
|
|
|
-- name: ListActiveImagesByFolder :many
|
|
SELECT id, object_key, size_bytes
|
|
FROM image_assets
|
|
WHERE tenant_id = sqlc.arg(tenant_id)
|
|
AND brand_id = sqlc.arg(brand_id)
|
|
AND folder_id = sqlc.arg(folder_id)
|
|
AND status = 'active'
|
|
AND deleted_at IS NULL;
|
|
|
|
-- name: MarkImagesInFolderPendingDelete :exec
|
|
UPDATE image_assets
|
|
SET status = 'pending_delete', folder_id = NULL, updated_at = NOW()
|
|
WHERE tenant_id = sqlc.arg(tenant_id)
|
|
AND brand_id = sqlc.arg(brand_id)
|
|
AND folder_id = sqlc.arg(folder_id)
|
|
AND status = 'active'
|
|
AND deleted_at IS NULL;
|
|
|
|
-- name: CountUncategorizedImages :one
|
|
SELECT COUNT(*)::INT AS count
|
|
FROM image_assets
|
|
WHERE tenant_id = sqlc.arg(tenant_id)
|
|
AND brand_id = sqlc.arg(brand_id)
|
|
AND folder_id IS NULL
|
|
AND status = 'active'
|
|
AND deleted_at IS NULL;
|