From 492fec7a28fe3d8a136e954ae8b158395d7a3e23 Mon Sep 17 00:00:00 2001 From: M_Kececi Date: Thu, 18 Jun 2026 14:24:44 +0300 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- .../2026-06-18_zbggcampaign_timestamps.sql | 29 +++++++++++++++++++ svc/routes/wholesale_campaigns.go | 4 +-- 2 files changed, 31 insertions(+), 2 deletions(-) create mode 100644 svc/db/migrations/2026-06-18_zbggcampaign_timestamps.sql diff --git a/svc/db/migrations/2026-06-18_zbggcampaign_timestamps.sql b/svc/db/migrations/2026-06-18_zbggcampaign_timestamps.sql new file mode 100644 index 0000000..d9b17c4 --- /dev/null +++ b/svc/db/migrations/2026-06-18_zbggcampaign_timestamps.sql @@ -0,0 +1,29 @@ +-- Add timestamps to zbggcampaign so UI can show "last change" times. +-- This table is append-only (history is preserved by inserting new rows), +-- so zlins_dttm is the time the assignment row was created. + +ALTER TABLE zbggcampaign + ADD COLUMN IF NOT EXISTS zlins_dttm TIMESTAMPTZ; + +ALTER TABLE zbggcampaign + ADD COLUMN IF NOT EXISTS zlupd_dttm TIMESTAMPTZ; + +-- Backfill existing rows (no historical source available). This prevents NULLs +-- and makes the API stable after deploying code that selects these columns. +UPDATE zbggcampaign +SET + zlins_dttm = COALESCE(zlins_dttm, now()), + zlupd_dttm = COALESCE(zlupd_dttm, zlins_dttm, now()); + +ALTER TABLE zbggcampaign + ALTER COLUMN zlins_dttm SET DEFAULT now(); + +ALTER TABLE zbggcampaign + ALTER COLUMN zlupd_dttm SET DEFAULT now(); + +ALTER TABLE zbggcampaign + ALTER COLUMN zlins_dttm SET NOT NULL; + +ALTER TABLE zbggcampaign + ALTER COLUMN zlupd_dttm SET NOT NULL; + diff --git a/svc/routes/wholesale_campaigns.go b/svc/routes/wholesale_campaigns.go index ca05ca7..4b8d5e2 100644 --- a/svc/routes/wholesale_campaigns.go +++ b/svc/routes/wholesale_campaigns.go @@ -486,7 +486,7 @@ SELECT COALESCE(sc.code,'') AS code, COALESCE(sc.title,'') AS title, COALESCE(sc.discount_rate, 0)::float8 AS discount_rate, - COALESCE(to_char(z.zlins_dttm, 'YYYY-MM-DD HH24:MI:SS'), '') AS at + COALESCE(to_char(COALESCE(z.zlupd_dttm, z.zlins_dttm), 'YYYY-MM-DD HH24:MI:SS'), '') AS at FROM zbggcampaign z LEFT JOIN sdcampaign sc ON sc.id = z.sdcampaign_id @@ -877,7 +877,7 @@ SELECT COALESCE(sc.code,'') AS code, COALESCE(sc.title,'') AS title, COALESCE(sc.discount_rate, 0)::float8 AS discount_rate, - COALESCE(to_char(z.zlins_dttm, 'YYYY-MM-DD HH24:MI:SS'), '') AS campaign_last_dttm + COALESCE(to_char(COALESCE(z.zlupd_dttm, z.zlins_dttm), 'YYYY-MM-DD HH24:MI:SS'), '') AS campaign_last_dttm FROM latest l LEFT JOIN zbggcampaign z ON z.id = l.z_id