mirror of
https://github.com/directus/directus.git
synced 2026-04-25 03:00:53 -04:00
129 lines
2.9 KiB
TypeScript
129 lines
2.9 KiB
TypeScript
import Knex from 'knex';
|
|
import { merge } from 'lodash';
|
|
|
|
export async function up(knex: Knex) {
|
|
await knex('directus_relations')
|
|
.delete()
|
|
.where('many_collection', 'like', 'directus_%')
|
|
.andWhere('one_collection', 'like', 'directus_%');
|
|
}
|
|
|
|
export async function down(knex: 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 as any)[key] = JSON.stringify(value);
|
|
}
|
|
}
|
|
|
|
return merge({}, defaults, row);
|
|
});
|
|
|
|
await knex.insert(systemRelations).into('directus_relations');
|
|
}
|