UNPKG

@directus/api

Version:

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

132 lines (131 loc) 3.37 kB
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. */ export 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); } }); } } export 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]); } }); } }