summaryrefslogtreecommitdiff
path: root/db/migrations/0218_lively_millenium_guard.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/0218_lively_millenium_guard.sql
parente275618ff8a1ce6977d3e2567d943edb941897f9 (diff)
(대표님, 최겸) 작업사항 - 이메일 템플릿, 메일링, 기술영업 요구사항 반영
Diffstat (limited to 'db/migrations/0218_lively_millenium_guard.sql')
-rw-r--r--db/migrations/0218_lively_millenium_guard.sql78
1 files changed, 78 insertions, 0 deletions
diff --git a/db/migrations/0218_lively_millenium_guard.sql b/db/migrations/0218_lively_millenium_guard.sql
new file mode 100644
index 00000000..b6817ec7
--- /dev/null
+++ b/db/migrations/0218_lively_millenium_guard.sql
@@ -0,0 +1,78 @@
+DROP VIEW "public"."template_detail_view";--> statement-breakpoint
+DROP VIEW "public"."template_list_view";--> 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,
+ u.name AS created_by_name,
+ u.email AS created_by_email,
+ 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 "users" u ON t.created_by = u.id
+ 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,
+ u.name,
+ u.email,
+ 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,
+ u.name AS created_by_name,
+ u.email AS created_by_email,
+ 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 "users" u ON t.created_by = u.id
+ LEFT JOIN (
+ SELECT
+ template_id,
+ COUNT(*) AS variable_count,
+ COUNT(*) FILTER (WHERE is_required) AS required_variable_count
+ FROM "template_variables"
+ GROUP BY template_id
+ ) v ON t.id = v.template_id
+); \ No newline at end of file