directus
136 строк · 2.4 Кб
1import type { Knex } from 'knex';
2
3const updates = [
4{
5table: 'directus_fields',
6constraints: [
7{
8column: 'group',
9references: 'directus_fields.id',
10},
11],
12},
13{
14table: 'directus_files',
15constraints: [
16{
17column: 'folder',
18references: 'directus_folders.id',
19},
20{
21column: 'uploaded_by',
22references: 'directus_users.id',
23},
24{
25column: 'modified_by',
26references: 'directus_users.id',
27},
28],
29},
30{
31table: 'directus_folders',
32constraints: [
33{
34column: 'parent',
35references: 'directus_folders.id',
36},
37],
38},
39{
40table: 'directus_permissions',
41constraints: [
42{
43column: 'role',
44references: 'directus_roles.id',
45},
46],
47},
48{
49table: 'directus_presets',
50constraints: [
51{
52column: 'user',
53references: 'directus_users.id',
54},
55{
56column: 'role',
57references: 'directus_roles.id',
58},
59],
60},
61{
62table: 'directus_revisions',
63constraints: [
64{
65column: 'activity',
66references: 'directus_activity.id',
67},
68{
69column: 'parent',
70references: 'directus_revisions.id',
71},
72],
73},
74{
75table: 'directus_sessions',
76constraints: [
77{
78column: 'user',
79references: 'directus_users.id',
80},
81],
82},
83{
84table: 'directus_settings',
85constraints: [
86{
87column: 'project_logo',
88references: 'directus_files.id',
89},
90{
91column: 'public_foreground',
92references: 'directus_files.id',
93},
94{
95column: 'public_background',
96references: 'directus_files.id',
97},
98],
99},
100{
101table: 'directus_users',
102constraints: [
103{
104column: 'role',
105references: 'directus_roles.id',
106},
107],
108},
109];
110
111/**
112* NOTE:
113* Not all databases allow (or support) recursive onUpdate/onDelete triggers. MS SQL / Oracle flat out deny creating them,
114* Postgres behaves erratic on those triggers, not sure if MySQL / Maria plays nice either.
115*/
116
117export async function up(knex: Knex): Promise<void> {
118for (const update of updates) {
119await knex.schema.alterTable(update.table, (table) => {
120for (const constraint of update.constraints) {
121table.dropForeign([constraint.column]);
122table.foreign(constraint.column).references(constraint.references);
123}
124});
125}
126}
127
128export async function down(knex: Knex): Promise<void> {
129for (const update of updates) {
130await knex.schema.alterTable(update.table, (table) => {
131for (const constraint of update.constraints) {
132table.dropForeign([constraint.column]);
133}
134});
135}
136}
137