b31d8d0096
- Added migration to harden task audit tracking by modifying audit_logs and related tables. - Introduced operator_id to several tables for better tracking of actions. - Updated article_templates with new prompt templates for various article types, enhancing content generation. - Created prompt_rules and schedule_tasks tables to manage content generation rules and scheduling. - Added foreign key constraints to articles for better data integrity.
60 lines
2.8 KiB
SQL
60 lines
2.8 KiB
SQL
-- name: ListScheduleTasks :many
|
|
SELECT st.id, st.tenant_id, st.prompt_rule_id, st.brand_id, st.name,
|
|
st.cron_expr, st.target_platform, st.start_at, st.end_at,
|
|
st.next_run_at, st.status, st.created_at, st.updated_at,
|
|
pr.name AS prompt_rule_name,
|
|
b.name AS brand_name
|
|
FROM schedule_tasks st
|
|
LEFT JOIN prompt_rules pr ON pr.id = st.prompt_rule_id
|
|
LEFT JOIN brands b ON b.id = st.brand_id
|
|
WHERE st.tenant_id = sqlc.arg(tenant_id)
|
|
AND st.deleted_at IS NULL
|
|
AND (sqlc.narg(status)::text IS NULL OR st.status = sqlc.narg(status))
|
|
AND (sqlc.narg(prompt_rule_id)::bigint IS NULL OR st.prompt_rule_id = sqlc.narg(prompt_rule_id))
|
|
ORDER BY st.created_at DESC
|
|
LIMIT sqlc.arg(page_size) OFFSET sqlc.arg(page_offset);
|
|
|
|
-- name: CountScheduleTasks :one
|
|
SELECT COUNT(*)
|
|
FROM schedule_tasks
|
|
WHERE tenant_id = sqlc.arg(tenant_id)
|
|
AND deleted_at IS NULL
|
|
AND (sqlc.narg(status)::text IS NULL OR status = sqlc.narg(status))
|
|
AND (sqlc.narg(prompt_rule_id)::bigint IS NULL OR prompt_rule_id = sqlc.narg(prompt_rule_id));
|
|
|
|
-- name: GetScheduleTaskByID :one
|
|
SELECT st.id, st.tenant_id, st.prompt_rule_id, st.brand_id, st.name,
|
|
st.cron_expr, st.target_platform, st.start_at, st.end_at,
|
|
st.next_run_at, st.status, st.created_at, st.updated_at,
|
|
pr.name AS prompt_rule_name,
|
|
b.name AS brand_name
|
|
FROM schedule_tasks st
|
|
LEFT JOIN prompt_rules pr ON pr.id = st.prompt_rule_id
|
|
LEFT JOIN brands b ON b.id = st.brand_id
|
|
WHERE st.id = sqlc.arg(id) AND st.tenant_id = sqlc.arg(tenant_id) AND st.deleted_at IS NULL;
|
|
|
|
-- name: CreateScheduleTask :one
|
|
INSERT INTO schedule_tasks (tenant_id, prompt_rule_id, brand_id, name, cron_expr,
|
|
target_platform, start_at, end_at, next_run_at)
|
|
VALUES (sqlc.arg(tenant_id), sqlc.arg(prompt_rule_id), sqlc.narg(brand_id), sqlc.arg(name),
|
|
sqlc.arg(cron_expr), sqlc.narg(target_platform), sqlc.narg(start_at), sqlc.narg(end_at),
|
|
sqlc.narg(next_run_at))
|
|
RETURNING id, created_at;
|
|
|
|
-- name: UpdateScheduleTask :exec
|
|
UPDATE schedule_tasks
|
|
SET prompt_rule_id = sqlc.arg(prompt_rule_id), brand_id = sqlc.narg(brand_id),
|
|
name = sqlc.arg(name), cron_expr = sqlc.arg(cron_expr),
|
|
target_platform = sqlc.narg(target_platform),
|
|
start_at = sqlc.narg(start_at), end_at = sqlc.narg(end_at),
|
|
next_run_at = sqlc.narg(next_run_at), updated_at = NOW()
|
|
WHERE id = sqlc.arg(id) AND tenant_id = sqlc.arg(tenant_id) AND deleted_at IS NULL;
|
|
|
|
-- name: UpdateScheduleTaskStatus :exec
|
|
UPDATE schedule_tasks SET status = sqlc.arg(status), updated_at = NOW()
|
|
WHERE id = sqlc.arg(id) AND tenant_id = sqlc.arg(tenant_id) AND deleted_at IS NULL;
|
|
|
|
-- name: SoftDeleteScheduleTask :exec
|
|
UPDATE schedule_tasks SET deleted_at = NOW(), updated_at = NOW()
|
|
WHERE id = sqlc.arg(id) AND tenant_id = sqlc.arg(tenant_id) AND deleted_at IS NULL;
|