From 4a4d5388d957d12a33cc15027a26a4c8cec5e1d7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nuno=20G=C3=B3is?= Date: Wed, 21 Feb 2024 14:02:19 +0000 Subject: [PATCH] chore: action_set_events db table migration (#6298) https://linear.app/unleash/issue/2-1962/implement-new-action-events-logic Adds a new `action_set_events` table for the new action events logic. Even though observable events are technically immutable, we're storing the observable event along with the action set event. This allows us to avoid 1 join while allowing us to persist action set event information after deleting observable events, if we wish to do so at a later stage. --- .../20240221082758-action-events.js | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 src/migrations/20240221082758-action-events.js diff --git a/src/migrations/20240221082758-action-events.js b/src/migrations/20240221082758-action-events.js new file mode 100644 index 000000000000..ba6982fde2e2 --- /dev/null +++ b/src/migrations/20240221082758-action-events.js @@ -0,0 +1,31 @@ +exports.up = function (db, cb) { + db.runSql( + ` + CREATE TABLE IF NOT EXISTS action_set_events + ( + id SERIAL PRIMARY KEY NOT NULL, + action_set_id INTEGER NOT NULL, + observable_event_id INTEGER NOT NULL, + created_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT now(), + state TEXT NOT NULL, + observable_event JSONB NOT NULL, + action_set JSONB NOT NULL + ); + + CREATE INDEX IF NOT EXISTS idx_action_set_events_observable_event_id ON action_set_events(observable_event_id); + CREATE INDEX IF NOT EXISTS idx_action_set_events_action_set_id_state ON action_set_events(action_set_id, state); + `, + cb, + ); +}; + +exports.down = function (db, cb) { + db.runSql( + ` + DROP INDEX IF EXISTS idx_action_set_events_observable_event_id; + DROP INDEX IF EXISTS idx_action_set_events_action_set_id_state; + DROP TABLE IF EXISTS action_set_events; + `, + cb, + ); +};