mirror of
https://github.com/awatertrevi/infisical.git
synced 2026-10-19 22:20:36 +00:00
* improvement: Approval Workflows can be deleted while maintaining history Co-authored-by: Daniel Hougaard <[email protected]>
60 lines
1.9 KiB
TypeScript
60 lines
1.9 KiB
TypeScript
import { Knex } from "knex";
|
|
|
|
import { TableName } from "../schemas";
|
|
|
|
export async function up(knex: Knex): Promise<void> {
|
|
const hasAccessApprovalPolicyDeletedAtColumn = await knex.schema.hasColumn(
|
|
TableName.AccessApprovalPolicy,
|
|
"deletedAt"
|
|
);
|
|
const hasSecretApprovalPolicyDeletedAtColumn = await knex.schema.hasColumn(
|
|
TableName.SecretApprovalPolicy,
|
|
"deletedAt"
|
|
);
|
|
|
|
if (!hasAccessApprovalPolicyDeletedAtColumn) {
|
|
await knex.schema.alterTable(TableName.AccessApprovalPolicy, (t) => {
|
|
t.timestamp("deletedAt");
|
|
});
|
|
}
|
|
if (!hasSecretApprovalPolicyDeletedAtColumn) {
|
|
await knex.schema.alterTable(TableName.SecretApprovalPolicy, (t) => {
|
|
t.timestamp("deletedAt");
|
|
});
|
|
}
|
|
|
|
await knex.schema.alterTable(TableName.AccessApprovalRequest, (t) => {
|
|
t.dropForeign(["privilegeId"]);
|
|
|
|
// Add the new foreign key constraint with ON DELETE SET NULL
|
|
t.foreign("privilegeId").references("id").inTable(TableName.ProjectUserAdditionalPrivilege).onDelete("SET NULL");
|
|
});
|
|
}
|
|
|
|
export async function down(knex: Knex): Promise<void> {
|
|
const hasAccessApprovalPolicyDeletedAtColumn = await knex.schema.hasColumn(
|
|
TableName.AccessApprovalPolicy,
|
|
"deletedAt"
|
|
);
|
|
const hasSecretApprovalPolicyDeletedAtColumn = await knex.schema.hasColumn(
|
|
TableName.SecretApprovalPolicy,
|
|
"deletedAt"
|
|
);
|
|
|
|
if (hasAccessApprovalPolicyDeletedAtColumn) {
|
|
await knex.schema.alterTable(TableName.AccessApprovalPolicy, (t) => {
|
|
t.dropColumn("deletedAt");
|
|
});
|
|
}
|
|
if (hasSecretApprovalPolicyDeletedAtColumn) {
|
|
await knex.schema.alterTable(TableName.SecretApprovalPolicy, (t) => {
|
|
t.dropColumn("deletedAt");
|
|
});
|
|
}
|
|
|
|
await knex.schema.alterTable(TableName.AccessApprovalRequest, (t) => {
|
|
t.dropForeign(["privilegeId"]);
|
|
t.foreign("privilegeId").references("id").inTable(TableName.ProjectUserAdditionalPrivilege).onDelete("CASCADE");
|
|
});
|
|
}
|