summaryrefslogtreecommitdiff
path: root/db/migrations/0217_old_ezekiel.sql
diff options
context:
space:
mode:
authordujinkim <dujin.kim@dtsolution.co.kr>2025-07-21 07:19:52 +0000
committerdujinkim <dujin.kim@dtsolution.co.kr>2025-07-21 07:19:52 +0000
commit9da494b0e3bbe7b513521d0915510fe9ee376b8b (patch)
treef936f69626bf2808ac409ce7cad97433465b3672 /db/migrations/0217_old_ezekiel.sql
parente275618ff8a1ce6977d3e2567d943edb941897f9 (diff)
(대표님, 최겸) 작업사항 - 이메일 템플릿, 메일링, 기술영업 요구사항 반영
Diffstat (limited to 'db/migrations/0217_old_ezekiel.sql')
-rw-r--r--db/migrations/0217_old_ezekiel.sql64
1 files changed, 64 insertions, 0 deletions
diff --git a/db/migrations/0217_old_ezekiel.sql b/db/migrations/0217_old_ezekiel.sql
new file mode 100644
index 00000000..dc3cb730
--- /dev/null
+++ b/db/migrations/0217_old_ezekiel.sql
@@ -0,0 +1,64 @@
+DROP VIEW "public"."template_detail_view";--> statement-breakpoint
+DROP VIEW "public"."template_list_view";--> statement-breakpoint
+ALTER TABLE "template_history" ALTER COLUMN "changed_by" SET DATA TYPE integer;--> statement-breakpoint
+ALTER TABLE "templates" ALTER COLUMN "created_by" SET DATA TYPE integer;--> statement-breakpoint
+ALTER TABLE "template_history" ADD CONSTRAINT "template_history_changed_by_users_id_fk" FOREIGN KEY ("changed_by") REFERENCES "public"."users"("id") ON DELETE set null ON UPDATE no action;--> statement-breakpoint
+ALTER TABLE "templates" ADD CONSTRAINT "templates_created_by_users_id_fk" FOREIGN KEY ("created_by") REFERENCES "public"."users"("id") ON DELETE set null ON UPDATE no action;--> statement-breakpoint
+CREATE VIEW "public"."template_detail_view" AS (
+ SELECT
+ t.id,
+ t.name,
+ t.slug,
+ t.content,
+ t.description,
+ t.category,
+ t.sample_data,
+ t.is_active,
+ t.version,
+ t.created_by,
+ t.created_at,
+ t.updated_at,
+ COALESCE(
+ json_agg(
+ json_build_object(
+ 'id', v.id,
+ 'variableName', v.variable_name,
+ 'variableType', v.variable_type,
+ 'defaultValue', v.default_value,
+ 'isRequired', v.is_required,
+ 'description', v.description,
+ 'displayOrder', v.display_order
+ )
+ ORDER BY v.display_order
+ ) FILTER (WHERE v.id IS NOT NULL),
+ '[]'::json
+ ) AS variables
+ FROM "templates" t
+ LEFT JOIN "template_variables" v ON t.id = v.template_id
+ GROUP BY t.id, t.name, t.slug, t.content, t.description, t.category,
+ t.sample_data, t.is_active, t.version, t.created_by, t.created_at, t.updated_at
+);--> statement-breakpoint
+CREATE VIEW "public"."template_list_view" AS (
+ SELECT
+ t.id,
+ t.name,
+ t.slug,
+ t.description,
+ t.category,
+ t.is_active,
+ t.version,
+ t.created_by,
+ t.created_at,
+ t.updated_at,
+ COALESCE(v.variable_count, 0) AS variable_count,
+ COALESCE(v.required_variable_count, 0) AS required_variable_count
+ FROM "templates" t
+ LEFT JOIN (
+ SELECT
+ template_id,
+ COUNT(*) AS variable_count,
+ COUNT(*) FILTER (WHERE is_required = true) AS required_variable_count
+ FROM "template_variables"
+ GROUP BY template_id
+ ) v ON t.id = v.template_id
+); \ No newline at end of file