From ecb5342a554e1eb32932325b1dfaaa4f2ac02948 Mon Sep 17 00:00:00 2001 From: Alfonso Hernandez Date: Thu, 18 Jul 2024 16:23:56 +0200 Subject: [PATCH] fix(backend): ensure idempotent migration --- ..._add-enforcement-level-secrets-policies.ts | 20 +++++++++++++------ ...8_add-enforcement-level-access-policies.ts | 20 +++++++++++++------ 2 files changed, 28 insertions(+), 12 deletions(-) diff --git a/backend/src/db/migrations/20240717184929_add-enforcement-level-secrets-policies.ts b/backend/src/db/migrations/20240717184929_add-enforcement-level-secrets-policies.ts index 4a1df888ac..ee668d1454 100644 --- a/backend/src/db/migrations/20240717184929_add-enforcement-level-secrets-policies.ts +++ b/backend/src/db/migrations/20240717184929_add-enforcement-level-secrets-policies.ts @@ -2,14 +2,22 @@ import { Knex } from "knex"; import { EnforcementLevel } from "@app/lib/types"; +import { TableName } from "../schemas"; + export async function up(knex: Knex): Promise { - await knex.schema.table("secret_approval_policies", (table) => { - table.specificType("enforcementLevel", "VARCHAR(10)").notNullable().defaultTo(EnforcementLevel.Hard); - }); + const hasColumn = await knex.schema.hasColumn(TableName.SecretApprovalPolicy, "enforcementLevel"); + if (!hasColumn) { + await knex.schema.table(TableName.SecretApprovalPolicy, (table) => { + table.string("enforcementLevel", 10).notNullable().defaultTo(EnforcementLevel.Hard); + }); + } } export async function down(knex: Knex): Promise { - await knex.schema.table("secret_approval_policies", (table) => { - table.dropColumn("enforcementLevel"); - }); + const hasColumn = await knex.schema.hasColumn(TableName.SecretApprovalPolicy, "enforcementLevel"); + if (hasColumn) { + await knex.schema.table(TableName.SecretApprovalPolicy, (table) => { + table.dropColumn("enforcementLevel"); + }); + } } diff --git a/backend/src/db/migrations/20240717194958_add-enforcement-level-access-policies.ts b/backend/src/db/migrations/20240717194958_add-enforcement-level-access-policies.ts index 9aeb8d51e3..83ef072010 100644 --- a/backend/src/db/migrations/20240717194958_add-enforcement-level-access-policies.ts +++ b/backend/src/db/migrations/20240717194958_add-enforcement-level-access-policies.ts @@ -2,14 +2,22 @@ import { Knex } from "knex"; import { EnforcementLevel } from "@app/lib/types"; +import { TableName } from "../schemas"; + export async function up(knex: Knex): Promise { - await knex.schema.table("access_approval_policies", (table) => { - table.specificType("enforcementLevel", "VARCHAR(10)").notNullable().defaultTo(EnforcementLevel.Hard); - }); + const hasColumn = await knex.schema.hasColumn(TableName.AccessApprovalPolicy, "enforcementLevel"); + if (!hasColumn) { + await knex.schema.table(TableName.AccessApprovalPolicy, (table) => { + table.string("enforcementLevel", 10).notNullable().defaultTo(EnforcementLevel.Hard); + }); + } } export async function down(knex: Knex): Promise { - await knex.schema.table("access_approval_policies", (table) => { - table.dropColumn("enforcementLevel"); - }); + const hasColumn = await knex.schema.hasColumn(TableName.AccessApprovalPolicy, "enforcementLevel"); + if (hasColumn) { + await knex.schema.table(TableName.AccessApprovalPolicy, (table) => { + table.dropColumn("enforcementLevel"); + }); + } }