UNPKG

@directus/api

Version:

Directus is a real-time API and App dashboard for managing SQL database content

113 lines (112 loc) 2.35 kB
//#region src/database/migrations/20201105A-add-cascade-system-relations.ts const updates = [ { table: "directus_fields", constraints: [{ column: "group", references: "directus_fields.id" }] }, { table: "directus_files", constraints: [ { column: "folder", references: "directus_folders.id" }, { column: "uploaded_by", references: "directus_users.id" }, { column: "modified_by", references: "directus_users.id" } ] }, { table: "directus_folders", constraints: [{ column: "parent", references: "directus_folders.id" }] }, { table: "directus_permissions", constraints: [{ column: "role", references: "directus_roles.id" }] }, { table: "directus_presets", constraints: [{ column: "user", references: "directus_users.id" }, { column: "role", references: "directus_roles.id" }] }, { table: "directus_revisions", constraints: [{ column: "activity", references: "directus_activity.id" }, { column: "parent", references: "directus_revisions.id" }] }, { table: "directus_sessions", constraints: [{ column: "user", references: "directus_users.id" }] }, { table: "directus_settings", constraints: [ { column: "project_logo", references: "directus_files.id" }, { column: "public_foreground", references: "directus_files.id" }, { column: "public_background", references: "directus_files.id" } ] }, { table: "directus_users", constraints: [{ column: "role", references: "directus_roles.id" }] } ]; /** * NOTE: * Not all databases allow (or support) recursive onUpdate/onDelete triggers. MS SQL / Oracle flat out deny creating them, * Postgres behaves erratic on those triggers, not sure if MySQL / Maria plays nice either. */ async function up(knex) { for (const update of updates) await knex.schema.alterTable(update.table, (table) => { for (const constraint of update.constraints) { table.dropForeign([constraint.column]); table.foreign(constraint.column).references(constraint.references); } }); } async function down(knex) { for (const update of updates) await knex.schema.alterTable(update.table, (table) => { for (const constraint of update.constraints) table.dropForeign([constraint.column]); }); } //#endregion export { down, up };