From d2de50ea0cc16ca42d6e9f76b5e1883abbcae9e5 Mon Sep 17 00:00:00 2001 From: Leonardo Mendoza Date: Fri, 6 Mar 2026 11:23:59 -0600 Subject: [PATCH] PD-5145 --- docker-entrypoint-initdb.d/6-features.sql | 19 ++++++++++++++- .../migrations/add_togglz_last_modified.sql | 23 +++++++++++++++++++ 2 files changed, 41 insertions(+), 1 deletion(-) create mode 100644 docker-entrypoint-initdb.d/migrations/add_togglz_last_modified.sql diff --git a/docker-entrypoint-initdb.d/6-features.sql b/docker-entrypoint-initdb.d/6-features.sql index 758c03ba29d..9fedf83324a 100644 --- a/docker-entrypoint-initdb.d/6-features.sql +++ b/docker-entrypoint-initdb.d/6-features.sql @@ -53,7 +53,8 @@ CREATE TABLE public.togglz ( feature_name character varying(100) NOT NULL, feature_enabled integer, strategy_id character varying(200), - strategy_params character varying(2000) + strategy_params character varying(2000), + last_modified timestamp with time zone ); @@ -181,6 +182,22 @@ OAUTH_DOMAINS_INTERSTITIAL 0 \N \N ALTER TABLE ONLY public.togglz ADD CONSTRAINT togglz_pkey PRIMARY KEY (feature_name); +-- Backfill last_modified for initial data +UPDATE public.togglz SET last_modified = NOW() WHERE last_modified IS NULL; + +-- Trigger to track last modification date on enable/disable +CREATE OR REPLACE FUNCTION update_togglz_last_modified() +RETURNS TRIGGER AS $$ +BEGIN + NEW.last_modified = NOW(); + RETURN NEW; +END; +$$ LANGUAGE plpgsql; + +CREATE TRIGGER togglz_last_modified_trigger +BEFORE INSERT OR UPDATE ON public.togglz +FOR EACH ROW +EXECUTE FUNCTION update_togglz_last_modified(); -- -- Name: SCHEMA public; Type: ACL; Schema: -; Owner: postgres diff --git a/docker-entrypoint-initdb.d/migrations/add_togglz_last_modified.sql b/docker-entrypoint-initdb.d/migrations/add_togglz_last_modified.sql new file mode 100644 index 00000000000..604cca6f833 --- /dev/null +++ b/docker-entrypoint-initdb.d/migrations/add_togglz_last_modified.sql @@ -0,0 +1,23 @@ +-- Migration: Add last_modified column to togglz table +-- Run against the features database: psql -d features -f add_togglz_last_modified.sql +-- Safe to run on DBs that already have this column (uses IF NOT EXISTS) + +\c features + +ALTER TABLE public.togglz ADD COLUMN IF NOT EXISTS last_modified timestamp with time zone; + +UPDATE public.togglz SET last_modified = NOW() WHERE last_modified IS NULL; + +CREATE OR REPLACE FUNCTION update_togglz_last_modified() +RETURNS TRIGGER AS $$ +BEGIN + NEW.last_modified = NOW(); + RETURN NEW; +END; +$$ LANGUAGE plpgsql; + +DROP TRIGGER IF EXISTS togglz_last_modified_trigger ON public.togglz; +CREATE TRIGGER togglz_last_modified_trigger +BEFORE INSERT OR UPDATE ON public.togglz +FOR EACH ROW +EXECUTE FUNCTION update_togglz_last_modified();