feat(kol): repo support for cross-tenant revision lookup

This commit is contained in:
2026-04-17 14:51:54 +08:00
parent d0747825e6
commit 26bc8a3749
10 changed files with 156 additions and 20 deletions
@@ -45,8 +45,8 @@ WHERE article_id = sqlc.arg(article_id)
ORDER BY version_no DESC;
-- name: CreateArticle :one
INSERT INTO articles (tenant_id, source_type, template_id, generate_status, publish_status)
VALUES (sqlc.arg(tenant_id), sqlc.arg(source_type), sqlc.arg(template_id), 'pending', 'unpublished')
INSERT INTO articles (tenant_id, source_type, template_id, kol_prompt_id, generate_status, publish_status)
VALUES (sqlc.arg(tenant_id), sqlc.arg(source_type), sqlc.arg(template_id), sqlc.arg(kol_prompt_id), 'pending', 'unpublished')
RETURNING id;
-- name: CreateArticleVersion :one
@@ -17,11 +17,27 @@ VALUES (sqlc.arg(operator_id), sqlc.arg(tenant_id), sqlc.arg(module), sqlc.arg(a
sqlc.arg(before_json), sqlc.arg(after_json), sqlc.arg(result), sqlc.arg(error_message));
-- name: CreateGenerationTask :one
INSERT INTO generation_tasks (tenant_id, operator_id, article_id, quota_reservation_id, task_type, input_params_json, status)
INSERT INTO generation_tasks (tenant_id, operator_id, article_id, quota_reservation_id, task_type, request_hash, input_params_json, status)
VALUES (sqlc.arg(tenant_id), sqlc.arg(operator_id), sqlc.arg(article_id), sqlc.arg(quota_reservation_id),
sqlc.arg(task_type), sqlc.arg(input_params_json), 'queued')
sqlc.arg(task_type), sqlc.arg(request_hash), sqlc.arg(input_params_json), 'queued')
RETURNING id;
-- name: CreateTaskRecord :one
INSERT INTO task_records (tenant_id, operator_id, task_type, resource_type, resource_id, status)
VALUES (sqlc.arg(tenant_id), sqlc.arg(operator_id), sqlc.arg(task_type),
sqlc.arg(resource_type), sqlc.arg(resource_id), sqlc.arg(status))
RETURNING id;
-- name: UpdateTaskRecordStatus :exec
UPDATE task_records
SET status = sqlc.arg(status),
error_message = sqlc.arg(error_message),
updated_at = NOW()
WHERE tenant_id = sqlc.arg(tenant_id)
AND task_type = sqlc.arg(task_type)
AND resource_type = sqlc.arg(resource_type)
AND resource_id = sqlc.arg(resource_id);
-- name: UpdateGenerationTaskStatus :exec
UPDATE generation_tasks SET status = sqlc.arg(status), error_message = sqlc.arg(error_message),
started_at = sqlc.arg(started_at), completed_at = sqlc.arg(completed_at), updated_at = NOW()
@@ -94,7 +94,8 @@ SELECT sp.id, sp.tenant_id, sp.subscription_id, sp.package_id, sp.prompt_id,
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
k.name AS package_name, k.status AS package_status,
k.tenant_id AS creator_tenant_id
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