feat: scope articles by brand

This commit is contained in:
2026-05-20 15:37:25 +08:00
parent 5fb9d0b0dd
commit dd082e2ed1
72 changed files with 3213 additions and 432 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, 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')
INSERT INTO articles (tenant_id, brand_id, source_type, template_id, kol_prompt_id, generate_status, publish_status)
VALUES (sqlc.arg(tenant_id), sqlc.arg(brand_id), sqlc.arg(source_type), sqlc.arg(template_id), sqlc.arg(kol_prompt_id), 'pending', 'unpublished')
RETURNING id;
-- name: CreateArticleVersion :one
@@ -1,17 +1,17 @@
-- name: CountArticlesByTenant :one
-- name: CountArticlesByTenantAndBrand :one
SELECT COUNT(*) FROM articles
WHERE tenant_id = sqlc.arg(tenant_id) AND deleted_at IS NULL;
WHERE tenant_id = sqlc.arg(tenant_id) AND brand_id = sqlc.arg(brand_id) AND deleted_at IS NULL;
-- name: CountPublishedArticlesByTenant :one
-- name: CountPublishedArticlesByTenantAndBrand :one
SELECT COUNT(*) FROM articles
WHERE tenant_id = sqlc.arg(tenant_id) AND publish_status = 'success' AND deleted_at IS NULL;
WHERE tenant_id = sqlc.arg(tenant_id) AND brand_id = sqlc.arg(brand_id) AND publish_status = 'success' AND deleted_at IS NULL;
-- name: CountBrandsByTenant :one
SELECT COUNT(*) FROM brands
WHERE tenant_id = sqlc.arg(tenant_id) AND deleted_at IS NULL;
-- name: GetRecentArticles :many
SELECT a.id, a.generate_status, a.publish_status, a.source_type, a.created_at,
-- name: GetRecentArticlesByBrand :many
SELECT a.id, a.brand_id, a.generate_status, a.publish_status, a.source_type, a.created_at,
av.title, av.markdown_content, av.word_count, av.source_label,
t.template_name,
COALESCE(
@@ -28,7 +28,7 @@ LEFT JOIN LATERAL (
ORDER BY created_at DESC
LIMIT 1
) gt ON true
WHERE a.tenant_id = sqlc.arg(tenant_id) AND a.deleted_at IS NULL
WHERE a.tenant_id = sqlc.arg(tenant_id) AND a.brand_id = sqlc.arg(brand_id) AND a.deleted_at IS NULL
ORDER BY a.created_at DESC
LIMIT 10;