UNPKG

@directus/api

Version:

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

123 lines (122 loc) 3.82 kB
import { merge } from 'lodash-es'; export async function up(knex) { await knex('directus_relations') .delete() .where('many_collection', 'like', 'directus_%') .andWhere('one_collection', 'like', 'directus_%'); } export async function down(knex) { const defaults = { many_collection: 'directus_users', many_field: null, many_primary: null, one_collection: null, one_field: null, one_primary: null, junction_field: null, }; const systemRelations = [ { many_collection: 'directus_users', many_field: 'role', many_primary: 'id', one_collection: 'directus_roles', one_field: 'users', one_primary: 'id', }, { many_collection: 'directus_users', many_field: 'avatar', many_primary: 'id', one_collection: 'directus_files', one_primary: 'id', }, { many_collection: 'directus_revisions', many_field: 'activity', many_primary: 'id', one_collection: 'directus_activity', one_field: 'revisions', one_primary: 'id', }, { many_collection: 'directus_presets', many_field: 'user', many_primary: 'id', one_collection: 'directus_users', one_primary: 'id', }, { many_collection: 'directus_presets', many_field: 'role', many_primary: 'id', one_collection: 'directus_roles', one_primary: 'id', }, { many_collection: 'directus_folders', many_field: 'parent', many_primary: 'id', one_collection: 'directus_folders', one_primary: 'id', }, { many_collection: 'directus_files', many_field: 'folder', many_primary: 'id', one_collection: 'directus_folders', one_primary: 'id', }, { many_collection: 'directus_files', many_field: 'uploaded_by', many_primary: 'id', one_collection: 'directus_users', one_primary: 'id', }, { many_collection: 'directus_fields', many_field: 'collection', many_primary: 'id', one_collection: 'directus_collections', one_field: 'fields', one_primary: 'collection', }, { many_collection: 'directus_activity', many_field: 'user', many_primary: 'id', one_collection: 'directus_users', one_primary: 'id', }, { many_collection: 'directus_settings', many_field: 'project_logo', many_primary: 'id', one_collection: 'directus_files', one_primary: 'id', }, { many_collection: 'directus_settings', many_field: 'public_foreground', many_primary: 'id', one_collection: 'directus_files', one_primary: 'id', }, { many_collection: 'directus_settings', many_field: 'public_background', many_primary: 'id', one_collection: 'directus_files', one_primary: 'id', }, ].map((row) => { for (const [key, value] of Object.entries(row)) { if (value !== null && (typeof value === 'object' || Array.isArray(value))) { row[key] = JSON.stringify(value); } } return merge({}, defaults, row); }); await knex.insert(systemRelations).into('directus_relations'); }