From b191a3c2f4a56093efad62801c666dbba607515c Mon Sep 17 00:00:00 2001 From: Meet Date: Sat, 28 Sep 2024 02:35:10 +0530 Subject: [PATCH 1/2] fix: check if column exists in migration --- .../20240918005344_add-group-approvals.ts | 52 ++++++++++++++----- 1 file changed, 40 insertions(+), 12 deletions(-) diff --git a/backend/src/db/migrations/20240918005344_add-group-approvals.ts b/backend/src/db/migrations/20240918005344_add-group-approvals.ts index ed4534eb5..7c26df838 100644 --- a/backend/src/db/migrations/20240918005344_add-group-approvals.ts +++ b/backend/src/db/migrations/20240918005344_add-group-approvals.ts @@ -3,34 +3,62 @@ import { Knex } from "knex"; import { TableName } from "../schemas"; export async function up(knex: Knex): Promise { + const hasAccessApproverGroupId = await knex.schema.hasColumn(TableName.AccessApprovalPolicyApprover, "approverGroupId"); + const hasAccessApproverUserId = await knex.schema.hasColumn(TableName.AccessApprovalPolicyApprover, "approverUserId"); + const hasSecretApproverGroupId = await knex.schema.hasColumn(TableName.SecretApprovalPolicyApprover, "approverGroupId"); + const hasSecretApproverUserId = await knex.schema.hasColumn(TableName.SecretApprovalPolicyApprover, "approverUserId"); if (await knex.schema.hasTable(TableName.AccessApprovalPolicyApprover)) { - // add column approverGroupId to AccessApprovalPolicyApprover await knex.schema.alterTable(TableName.AccessApprovalPolicyApprover, (table) => { - // make nullable - table.uuid("approverGroupId").nullable().references("id").inTable(TableName.Groups).onDelete("CASCADE"); + // add column approverGroupId to AccessApprovalPolicyApprover + if(!hasAccessApproverGroupId) { + table.uuid("approverGroupId").nullable().references("id").inTable(TableName.Groups).onDelete("CASCADE"); + } + // make approverUserId nullable - table.uuid("approverUserId").nullable().alter(); + if(hasAccessApproverUserId){ + table.uuid("approverUserId").nullable().alter(); + } }); - // add column approverGroupId to SecretApprovalPolicyApprover await knex.schema.alterTable(TableName.SecretApprovalPolicyApprover, (table) => { - table.uuid("approverGroupId").references("id").inTable(TableName.Groups).onDelete("CASCADE"); - table.uuid("approverUserId").nullable().alter(); + // add column approverGroupId to SecretApprovalPolicyApprover + if(!hasSecretApproverGroupId) { + table.uuid("approverGroupId").nullable().references("id").inTable(TableName.Groups).onDelete("CASCADE"); + } + + // make approverUserId nullable + if(hasSecretApproverUserId){ + table.uuid("approverUserId").nullable().alter(); + } }); } } export async function down(knex: Knex): Promise { + const hasAccessApproverGroupId = await knex.schema.hasColumn(TableName.AccessApprovalPolicyApprover, "approverGroupId"); + const hasAccessApproverUserId = await knex.schema.hasColumn(TableName.AccessApprovalPolicyApprover, "approverUserId"); + const hasSecretApproverGroupId = await knex.schema.hasColumn(TableName.SecretApprovalPolicyApprover, "approverGroupId"); + const hasSecretApproverUserId = await knex.schema.hasColumn(TableName.SecretApprovalPolicyApprover, "approverUserId"); + if (await knex.schema.hasTable(TableName.AccessApprovalPolicyApprover)) { - // remove await knex.schema.alterTable(TableName.AccessApprovalPolicyApprover, (table) => { - table.dropColumn("approverGroupId"); - table.uuid("approverUserId").notNullable().alter(); + if(hasAccessApproverGroupId){ + table.dropColumn("approverGroupId"); + } + // make approverUserId not nullable + if(hasAccessApproverUserId){ + table.uuid("approverUserId").notNullable().alter(); + } }); // remove await knex.schema.alterTable(TableName.SecretApprovalPolicyApprover, (table) => { - table.dropColumn("approverGroupId"); - table.uuid("approverUserId").notNullable().alter(); + if(hasSecretApproverGroupId){ + table.dropColumn("approverGroupId"); + } + // make approverUserId not nullable + if(hasSecretApproverUserId){ + table.uuid("approverUserId").notNullable().alter(); + } }); } } From 1992a09ac2ea6b8e6a22a7779c35cb863484cbe2 Mon Sep 17 00:00:00 2001 From: Meet Date: Sat, 28 Sep 2024 03:20:02 +0530 Subject: [PATCH 2/2] chore: lint fix --- .../20240918005344_add-group-approvals.ts | 36 ++++++++++++------- 1 file changed, 24 insertions(+), 12 deletions(-) diff --git a/backend/src/db/migrations/20240918005344_add-group-approvals.ts b/backend/src/db/migrations/20240918005344_add-group-approvals.ts index 7c26df838..9a33f53aa 100644 --- a/backend/src/db/migrations/20240918005344_add-group-approvals.ts +++ b/backend/src/db/migrations/20240918005344_add-group-approvals.ts @@ -3,30 +3,36 @@ import { Knex } from "knex"; import { TableName } from "../schemas"; export async function up(knex: Knex): Promise { - const hasAccessApproverGroupId = await knex.schema.hasColumn(TableName.AccessApprovalPolicyApprover, "approverGroupId"); + const hasAccessApproverGroupId = await knex.schema.hasColumn( + TableName.AccessApprovalPolicyApprover, + "approverGroupId" + ); const hasAccessApproverUserId = await knex.schema.hasColumn(TableName.AccessApprovalPolicyApprover, "approverUserId"); - const hasSecretApproverGroupId = await knex.schema.hasColumn(TableName.SecretApprovalPolicyApprover, "approverGroupId"); + const hasSecretApproverGroupId = await knex.schema.hasColumn( + TableName.SecretApprovalPolicyApprover, + "approverGroupId" + ); const hasSecretApproverUserId = await knex.schema.hasColumn(TableName.SecretApprovalPolicyApprover, "approverUserId"); if (await knex.schema.hasTable(TableName.AccessApprovalPolicyApprover)) { await knex.schema.alterTable(TableName.AccessApprovalPolicyApprover, (table) => { // add column approverGroupId to AccessApprovalPolicyApprover - if(!hasAccessApproverGroupId) { + if (!hasAccessApproverGroupId) { table.uuid("approverGroupId").nullable().references("id").inTable(TableName.Groups).onDelete("CASCADE"); } // make approverUserId nullable - if(hasAccessApproverUserId){ + if (hasAccessApproverUserId) { table.uuid("approverUserId").nullable().alter(); } }); await knex.schema.alterTable(TableName.SecretApprovalPolicyApprover, (table) => { // add column approverGroupId to SecretApprovalPolicyApprover - if(!hasSecretApproverGroupId) { + if (!hasSecretApproverGroupId) { table.uuid("approverGroupId").nullable().references("id").inTable(TableName.Groups).onDelete("CASCADE"); } // make approverUserId nullable - if(hasSecretApproverUserId){ + if (hasSecretApproverUserId) { table.uuid("approverUserId").nullable().alter(); } }); @@ -34,29 +40,35 @@ export async function up(knex: Knex): Promise { } export async function down(knex: Knex): Promise { - const hasAccessApproverGroupId = await knex.schema.hasColumn(TableName.AccessApprovalPolicyApprover, "approverGroupId"); + const hasAccessApproverGroupId = await knex.schema.hasColumn( + TableName.AccessApprovalPolicyApprover, + "approverGroupId" + ); const hasAccessApproverUserId = await knex.schema.hasColumn(TableName.AccessApprovalPolicyApprover, "approverUserId"); - const hasSecretApproverGroupId = await knex.schema.hasColumn(TableName.SecretApprovalPolicyApprover, "approverGroupId"); + const hasSecretApproverGroupId = await knex.schema.hasColumn( + TableName.SecretApprovalPolicyApprover, + "approverGroupId" + ); const hasSecretApproverUserId = await knex.schema.hasColumn(TableName.SecretApprovalPolicyApprover, "approverUserId"); if (await knex.schema.hasTable(TableName.AccessApprovalPolicyApprover)) { await knex.schema.alterTable(TableName.AccessApprovalPolicyApprover, (table) => { - if(hasAccessApproverGroupId){ + if (hasAccessApproverGroupId) { table.dropColumn("approverGroupId"); } // make approverUserId not nullable - if(hasAccessApproverUserId){ + if (hasAccessApproverUserId) { table.uuid("approverUserId").notNullable().alter(); } }); // remove await knex.schema.alterTable(TableName.SecretApprovalPolicyApprover, (table) => { - if(hasSecretApproverGroupId){ + if (hasSecretApproverGroupId) { table.dropColumn("approverGroupId"); } // make approverUserId not nullable - if(hasSecretApproverUserId){ + if (hasSecretApproverUserId) { table.uuid("approverUserId").notNullable().alter(); } });