directus

Форк
0
/
20201105A-add-cascade-system-relations.ts 
136 строк · 2.4 Кб
1
import type { Knex } from 'knex';
2

3
const updates = [
4
	{
5
		table: 'directus_fields',
6
		constraints: [
7
			{
8
				column: 'group',
9
				references: 'directus_fields.id',
10
			},
11
		],
12
	},
13
	{
14
		table: 'directus_files',
15
		constraints: [
16
			{
17
				column: 'folder',
18
				references: 'directus_folders.id',
19
			},
20
			{
21
				column: 'uploaded_by',
22
				references: 'directus_users.id',
23
			},
24
			{
25
				column: 'modified_by',
26
				references: 'directus_users.id',
27
			},
28
		],
29
	},
30
	{
31
		table: 'directus_folders',
32
		constraints: [
33
			{
34
				column: 'parent',
35
				references: 'directus_folders.id',
36
			},
37
		],
38
	},
39
	{
40
		table: 'directus_permissions',
41
		constraints: [
42
			{
43
				column: 'role',
44
				references: 'directus_roles.id',
45
			},
46
		],
47
	},
48
	{
49
		table: 'directus_presets',
50
		constraints: [
51
			{
52
				column: 'user',
53
				references: 'directus_users.id',
54
			},
55
			{
56
				column: 'role',
57
				references: 'directus_roles.id',
58
			},
59
		],
60
	},
61
	{
62
		table: 'directus_revisions',
63
		constraints: [
64
			{
65
				column: 'activity',
66
				references: 'directus_activity.id',
67
			},
68
			{
69
				column: 'parent',
70
				references: 'directus_revisions.id',
71
			},
72
		],
73
	},
74
	{
75
		table: 'directus_sessions',
76
		constraints: [
77
			{
78
				column: 'user',
79
				references: 'directus_users.id',
80
			},
81
		],
82
	},
83
	{
84
		table: 'directus_settings',
85
		constraints: [
86
			{
87
				column: 'project_logo',
88
				references: 'directus_files.id',
89
			},
90
			{
91
				column: 'public_foreground',
92
				references: 'directus_files.id',
93
			},
94
			{
95
				column: 'public_background',
96
				references: 'directus_files.id',
97
			},
98
		],
99
	},
100
	{
101
		table: 'directus_users',
102
		constraints: [
103
			{
104
				column: 'role',
105
				references: '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

117
export async function up(knex: Knex): Promise<void> {
118
	for (const update of updates) {
119
		await knex.schema.alterTable(update.table, (table) => {
120
			for (const constraint of update.constraints) {
121
				table.dropForeign([constraint.column]);
122
				table.foreign(constraint.column).references(constraint.references);
123
			}
124
		});
125
	}
126
}
127

128
export async function down(knex: Knex): Promise<void> {
129
	for (const update of updates) {
130
		await knex.schema.alterTable(update.table, (table) => {
131
			for (const constraint of update.constraints) {
132
				table.dropForeign([constraint.column]);
133
			}
134
		});
135
	}
136
}
137

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.