feat(kol): add sqlc queries for all KOL tables
This commit is contained in:
@@ -0,0 +1,90 @@
|
||||
-- name: CreateKolSubscription :one
|
||||
INSERT INTO kol_subscriptions (tenant_id, package_id, status)
|
||||
VALUES (sqlc.arg(tenant_id)::bigint, sqlc.arg(package_id), 'pending')
|
||||
RETURNING id, tenant_id, package_id, status, approved_by, start_at, end_at, created_at, updated_at;
|
||||
|
||||
-- name: GetKolSubscriptionByID :one
|
||||
SELECT id, tenant_id, package_id, status, approved_by, start_at, end_at, created_at, updated_at
|
||||
FROM kol_subscriptions
|
||||
WHERE id = sqlc.arg(id)
|
||||
AND tenant_id = sqlc.arg(tenant_id)::bigint;
|
||||
|
||||
-- name: GetActiveKolSubscription :one
|
||||
SELECT id, tenant_id, package_id, status, approved_by, start_at, end_at, created_at, updated_at
|
||||
FROM kol_subscriptions
|
||||
WHERE tenant_id = sqlc.arg(tenant_id)::bigint
|
||||
AND package_id = sqlc.arg(package_id)
|
||||
AND status IN ('pending', 'active');
|
||||
|
||||
-- name: ListKolSubscriptions :many
|
||||
SELECT id, tenant_id, package_id, status, approved_by, start_at, end_at, created_at, updated_at
|
||||
FROM kol_subscriptions
|
||||
WHERE tenant_id = sqlc.arg(tenant_id)::bigint
|
||||
ORDER BY created_at DESC;
|
||||
|
||||
-- name: ListActiveSubscribersForPackage :many
|
||||
SELECT id, tenant_id, package_id, status, approved_by, start_at, end_at, created_at, updated_at
|
||||
FROM kol_subscriptions
|
||||
WHERE package_id = sqlc.arg(package_id)
|
||||
AND tenant_id IS NOT NULL
|
||||
AND status = 'active';
|
||||
|
||||
-- name: ApproveKolSubscription :exec
|
||||
UPDATE kol_subscriptions
|
||||
SET status = 'active',
|
||||
approved_by = sqlc.arg(approved_by),
|
||||
start_at = NOW(),
|
||||
end_at = sqlc.arg(end_at),
|
||||
updated_at = NOW()
|
||||
WHERE id = sqlc.arg(id)
|
||||
AND tenant_id = sqlc.arg(tenant_id)::bigint;
|
||||
|
||||
-- name: RevokeKolSubscription :exec
|
||||
UPDATE kol_subscriptions
|
||||
SET status = 'revoked', updated_at = NOW()
|
||||
WHERE id = sqlc.arg(id)
|
||||
AND tenant_id = sqlc.arg(tenant_id)::bigint;
|
||||
|
||||
-- name: CreateSubscriptionPrompt :exec
|
||||
INSERT INTO kol_subscription_prompts (tenant_id, subscription_id, package_id, prompt_id, status)
|
||||
VALUES (sqlc.arg(tenant_id)::bigint, sqlc.arg(subscription_id),
|
||||
sqlc.arg(package_id), sqlc.arg(prompt_id), 'active')
|
||||
ON CONFLICT (subscription_id, prompt_id) DO NOTHING;
|
||||
|
||||
-- name: ListSubscriptionPromptsByTenant :many
|
||||
SELECT sp.id, sp.tenant_id, sp.subscription_id, sp.package_id, sp.prompt_id,
|
||||
sp.status, sp.granted_at, sp.revoked_at,
|
||||
p.name AS prompt_name, p.platform_hint, p.published_revision_no,
|
||||
k.name AS package_name
|
||||
FROM kol_subscription_prompts sp
|
||||
JOIN kol_prompts p ON p.id = sp.prompt_id AND p.deleted_at IS NULL
|
||||
JOIN kol_packages k ON k.id = sp.package_id AND k.deleted_at IS NULL
|
||||
WHERE sp.tenant_id = sqlc.arg(tenant_id)::bigint
|
||||
AND sp.status = 'active'
|
||||
ORDER BY sp.granted_at DESC;
|
||||
|
||||
-- name: GetSubscriptionPromptByID :one
|
||||
SELECT sp.id, sp.tenant_id, sp.subscription_id, sp.package_id, sp.prompt_id,
|
||||
sp.status, sp.granted_at, sp.revoked_at,
|
||||
s.status AS subscription_status, s.end_at AS subscription_end_at,
|
||||
p.name AS prompt_name, p.platform_hint, p.status AS prompt_status,
|
||||
p.published_revision_no,
|
||||
k.name AS package_name, k.status AS package_status
|
||||
FROM kol_subscription_prompts sp
|
||||
JOIN kol_subscriptions s ON s.id = sp.subscription_id
|
||||
JOIN kol_prompts p ON p.id = sp.prompt_id AND p.deleted_at IS NULL
|
||||
JOIN kol_packages k ON k.id = sp.package_id AND k.deleted_at IS NULL
|
||||
WHERE sp.id = sqlc.arg(id)
|
||||
AND sp.tenant_id = sqlc.arg(tenant_id)::bigint;
|
||||
|
||||
-- name: RevokeSubscriptionPromptsBySubscription :exec
|
||||
UPDATE kol_subscription_prompts
|
||||
SET status = 'revoked', revoked_at = NOW(), updated_at = NOW()
|
||||
WHERE subscription_id = sqlc.arg(subscription_id)
|
||||
AND tenant_id = sqlc.arg(tenant_id)::bigint;
|
||||
|
||||
-- name: RevokeSubscriptionPromptsByPrompt :exec
|
||||
UPDATE kol_subscription_prompts
|
||||
SET status = 'revoked', revoked_at = NOW(), updated_at = NOW()
|
||||
WHERE prompt_id = sqlc.arg(prompt_id)
|
||||
AND tenant_id = sqlc.arg(tenant_id)::bigint;
|
||||
Reference in New Issue
Block a user