-- name: CreateKolPrompt :one INSERT INTO kol_prompts (tenant_id, package_id, name, platform_hint, sort_order, created_by, updated_by) VALUES (sqlc.arg(tenant_id)::bigint, sqlc.arg(package_id), sqlc.arg(name), sqlc.arg(platform_hint), sqlc.arg(sort_order), sqlc.arg(created_by), sqlc.arg(created_by)) RETURNING id, tenant_id, package_id, name, platform_hint, status, sort_order, published_revision_no, draft_revision_no, created_by, updated_by, created_at, updated_at; -- name: GetKolPromptByID :one SELECT id, tenant_id, package_id, name, platform_hint, status, sort_order, published_revision_no, draft_revision_no, created_by, updated_by, created_at, updated_at FROM kol_prompts WHERE id = sqlc.arg(id) AND tenant_id = sqlc.arg(tenant_id)::bigint AND deleted_at IS NULL; -- name: ListKolPromptsByPackage :many SELECT id, tenant_id, package_id, name, platform_hint, status, sort_order, published_revision_no, draft_revision_no, created_by, updated_by, created_at, updated_at FROM kol_prompts WHERE package_id = sqlc.arg(package_id) AND tenant_id = sqlc.arg(tenant_id)::bigint AND deleted_at IS NULL ORDER BY sort_order ASC, created_at ASC; -- name: ListActiveKolPromptsByPackage :many SELECT id, tenant_id, package_id, published_revision_no FROM kol_prompts WHERE package_id = sqlc.arg(package_id) AND tenant_id = sqlc.arg(tenant_id)::bigint AND status = 'active' AND published_revision_no IS NOT NULL AND deleted_at IS NULL ORDER BY sort_order ASC; -- name: UpdateKolPromptMetadata :exec UPDATE kol_prompts SET name = sqlc.arg(name), platform_hint = sqlc.arg(platform_hint), sort_order = sqlc.arg(sort_order), updated_by = sqlc.arg(updated_by), updated_at = NOW() WHERE id = sqlc.arg(id) AND tenant_id = sqlc.arg(tenant_id)::bigint AND deleted_at IS NULL; -- name: UpdateKolPromptPublishedRevision :exec UPDATE kol_prompts SET published_revision_no = sqlc.arg(revision_no), status = 'active', updated_by = sqlc.arg(updated_by), updated_at = NOW() WHERE id = sqlc.arg(id) AND tenant_id = sqlc.arg(tenant_id)::bigint AND deleted_at IS NULL; -- name: UpdateKolPromptDraftRevision :exec UPDATE kol_prompts SET draft_revision_no = sqlc.arg(revision_no), updated_by = sqlc.arg(updated_by), updated_at = NOW() WHERE id = sqlc.arg(id) AND tenant_id = sqlc.arg(tenant_id)::bigint AND deleted_at IS NULL; -- name: UpdateKolPromptStatus :exec UPDATE kol_prompts SET status = sqlc.arg(status), updated_by = sqlc.arg(updated_by), updated_at = NOW() WHERE id = sqlc.arg(id) AND tenant_id = sqlc.arg(tenant_id)::bigint AND deleted_at IS NULL; -- name: SoftDeleteKolPrompt :exec UPDATE kol_prompts SET deleted_at = NOW() WHERE id = sqlc.arg(id) AND tenant_id = sqlc.arg(tenant_id)::bigint AND deleted_at IS NULL; -- name: CreateKolPromptRevision :one INSERT INTO kol_prompt_revisions (tenant_id, prompt_id, revision_no, prompt_asset_key, schema_json, card_config_json, created_by) VALUES (sqlc.arg(tenant_id)::bigint, sqlc.arg(prompt_id), sqlc.arg(revision_no), sqlc.arg(prompt_asset_key), sqlc.arg(schema_json)::jsonb, sqlc.arg(card_config_json)::jsonb, sqlc.arg(created_by)) RETURNING id, prompt_id, revision_no, prompt_asset_key, schema_json, card_config_json, created_by, created_at; -- name: GetKolPromptRevision :one SELECT id, prompt_id, revision_no, prompt_asset_key, schema_json, card_config_json, created_by, created_at FROM kol_prompt_revisions WHERE prompt_id = sqlc.arg(prompt_id) AND revision_no = sqlc.arg(revision_no) AND tenant_id = sqlc.arg(tenant_id)::bigint; -- name: NextKolPromptRevisionNo :one SELECT COALESCE(MAX(revision_no), 0) + 1 AS next_revision_no FROM kol_prompt_revisions WHERE prompt_id = sqlc.arg(prompt_id) AND tenant_id = sqlc.arg(tenant_id)::bigint;