directus

Форк
0
/
20230823A-add-content-versioning.ts 
47 строк · 1.5 Кб
1
import type { Knex } from 'knex';
2

3
export async function up(knex: Knex): Promise<void> {
4
	await knex.schema.createTable('directus_versions', (table) => {
5
		table.uuid('id').primary().notNullable();
6
		table.string('key', 64).notNullable();
7
		table.string('name');
8

9
		table
10
			.string('collection', 64)
11
			.notNullable()
12
			.references('collection')
13
			.inTable('directus_collections')
14
			.onDelete('CASCADE');
15

16
		table.string('item').notNullable();
17

18
		// Hash is managed on API side
19
		table.string('hash');
20

21
		table.timestamp('date_created').defaultTo(knex.fn.now());
22
		table.timestamp('date_updated').defaultTo(knex.fn.now());
23
		table.uuid('user_created').references('id').inTable('directus_users').onDelete('SET NULL');
24
		// Cannot have two constraints from/to the same table, handled on API side
25
		table.uuid('user_updated').references('id').inTable('directus_users');
26
	});
27

28
	await knex.schema.alterTable('directus_collections', (table) => {
29
		table.boolean('versioning').notNullable().defaultTo(false);
30
	});
31

32
	await knex.schema.alterTable('directus_revisions', (table) => {
33
		table.uuid('version').references('id').inTable('directus_versions').onDelete('CASCADE');
34
	});
35
}
36

37
export async function down(knex: Knex): Promise<void> {
38
	await knex.schema.alterTable('directus_collections', (table) => {
39
		table.dropColumn('versioning');
40
	});
41

42
	await knex.schema.alterTable('directus_revisions', (table) => {
43
		table.dropColumn('version');
44
	});
45

46
	await knex.schema.dropTable('directus_versions');
47
}
48

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

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

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

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