Skip to content

Commit d2de50e

Browse files
committed
PD-5145
1 parent 7a3089d commit d2de50e

File tree

2 files changed

+41
-1
lines changed

2 files changed

+41
-1
lines changed

docker-entrypoint-initdb.d/6-features.sql

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,8 @@ CREATE TABLE public.togglz (
5353
feature_name character varying(100) NOT NULL,
5454
feature_enabled integer,
5555
strategy_id character varying(200),
56-
strategy_params character varying(2000)
56+
strategy_params character varying(2000),
57+
last_modified timestamp with time zone
5758
);
5859

5960

@@ -181,6 +182,22 @@ OAUTH_DOMAINS_INTERSTITIAL 0 \N \N
181182
ALTER TABLE ONLY public.togglz
182183
ADD CONSTRAINT togglz_pkey PRIMARY KEY (feature_name);
183184

185+
-- Backfill last_modified for initial data
186+
UPDATE public.togglz SET last_modified = NOW() WHERE last_modified IS NULL;
187+
188+
-- Trigger to track last modification date on enable/disable
189+
CREATE OR REPLACE FUNCTION update_togglz_last_modified()
190+
RETURNS TRIGGER AS $$
191+
BEGIN
192+
NEW.last_modified = NOW();
193+
RETURN NEW;
194+
END;
195+
$$ LANGUAGE plpgsql;
196+
197+
CREATE TRIGGER togglz_last_modified_trigger
198+
BEFORE INSERT OR UPDATE ON public.togglz
199+
FOR EACH ROW
200+
EXECUTE FUNCTION update_togglz_last_modified();
184201

185202
--
186203
-- Name: SCHEMA public; Type: ACL; Schema: -; Owner: postgres
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
-- Migration: Add last_modified column to togglz table
2+
-- Run against the features database: psql -d features -f add_togglz_last_modified.sql
3+
-- Safe to run on DBs that already have this column (uses IF NOT EXISTS)
4+
5+
\c features
6+
7+
ALTER TABLE public.togglz ADD COLUMN IF NOT EXISTS last_modified timestamp with time zone;
8+
9+
UPDATE public.togglz SET last_modified = NOW() WHERE last_modified IS NULL;
10+
11+
CREATE OR REPLACE FUNCTION update_togglz_last_modified()
12+
RETURNS TRIGGER AS $$
13+
BEGIN
14+
NEW.last_modified = NOW();
15+
RETURN NEW;
16+
END;
17+
$$ LANGUAGE plpgsql;
18+
19+
DROP TRIGGER IF EXISTS togglz_last_modified_trigger ON public.togglz;
20+
CREATE TRIGGER togglz_last_modified_trigger
21+
BEFORE INSERT OR UPDATE ON public.togglz
22+
FOR EACH ROW
23+
EXECUTE FUNCTION update_togglz_last_modified();

0 commit comments

Comments
 (0)