Merge remote-tracking branch 'origin/master'
This commit is contained in:
29
svc/db/migrations/2026-06-18_zbggcampaign_timestamps.sql
Normal file
29
svc/db/migrations/2026-06-18_zbggcampaign_timestamps.sql
Normal file
@@ -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;
|
||||||
|
|
||||||
@@ -486,7 +486,7 @@ SELECT
|
|||||||
COALESCE(sc.code,'') AS code,
|
COALESCE(sc.code,'') AS code,
|
||||||
COALESCE(sc.title,'') AS title,
|
COALESCE(sc.title,'') AS title,
|
||||||
COALESCE(sc.discount_rate, 0)::float8 AS discount_rate,
|
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
|
FROM zbggcampaign z
|
||||||
LEFT JOIN sdcampaign sc
|
LEFT JOIN sdcampaign sc
|
||||||
ON sc.id = z.sdcampaign_id
|
ON sc.id = z.sdcampaign_id
|
||||||
@@ -877,7 +877,7 @@ SELECT
|
|||||||
COALESCE(sc.code,'') AS code,
|
COALESCE(sc.code,'') AS code,
|
||||||
COALESCE(sc.title,'') AS title,
|
COALESCE(sc.title,'') AS title,
|
||||||
COALESCE(sc.discount_rate, 0)::float8 AS discount_rate,
|
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
|
FROM latest l
|
||||||
LEFT JOIN zbggcampaign z
|
LEFT JOIN zbggcampaign z
|
||||||
ON z.id = l.z_id
|
ON z.id = l.z_id
|
||||||
|
|||||||
Reference in New Issue
Block a user