From 31e78d753604fb76ebac41bf4b720709bfd7ffbd Mon Sep 17 00:00:00 2001 From: Mateusz Kwasniewski Date: Mon, 27 Oct 2025 15:14:52 +0100 Subject: [PATCH] refactor: milestone progression natural key (#10869) --- .../release-plan-read-model.test.ts | 1 - ...094509-milestone-progression-natural-pk.js | 27 +++++++++++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) create mode 100644 src/migrations/20251027094509-milestone-progression-natural-pk.js diff --git a/src/lib/features/release-plans/release-plan-read-model.test.ts b/src/lib/features/release-plans/release-plan-read-model.test.ts index 95a4b04155..32297533f8 100644 --- a/src/lib/features/release-plans/release-plan-read-model.test.ts +++ b/src/lib/features/release-plans/release-plan-read-model.test.ts @@ -110,7 +110,6 @@ const createMilestoneProgression = async (progressionData: { executedAt?: Date; }) => { await db.rawDatabase('milestone_progressions').insert({ - id: ulid(), source_milestone: progressionData.sourceMilestoneId, target_milestone: progressionData.targetMilestoneId, transition_condition: progressionData.transitionCondition || null, diff --git a/src/migrations/20251027094509-milestone-progression-natural-pk.js b/src/migrations/20251027094509-milestone-progression-natural-pk.js new file mode 100644 index 0000000000..57c1390a4a --- /dev/null +++ b/src/migrations/20251027094509-milestone-progression-natural-pk.js @@ -0,0 +1,27 @@ +exports.up = function(db, cb) { + db.runSql( + ` + DROP INDEX IF EXISTS milestone_progressions_source_milestone_idx; + + ALTER TABLE milestone_progressions DROP COLUMN id; + + ALTER TABLE milestone_progressions ADD PRIMARY KEY (source_milestone); + `, + cb, + ); +}; + +exports.down = function(db, cb) { + db.runSql( + ` + ALTER TABLE milestone_progressions DROP CONSTRAINT milestone_progressions_pkey; + + ALTER TABLE milestone_progressions ADD COLUMN id TEXT NOT NULL DEFAULT gen_random_uuid()::text; + + ALTER TABLE milestone_progressions ADD PRIMARY KEY (id); + + CREATE UNIQUE INDEX milestone_progressions_source_milestone_idx ON milestone_progressions(source_milestone); + `, + cb, + ); +};