directus
47 строк · 1.5 Кб
1import type { Knex } from 'knex';
2
3export async function up(knex: Knex): Promise<void> {
4await knex.schema.createTable('directus_versions', (table) => {
5table.uuid('id').primary().notNullable();
6table.string('key', 64).notNullable();
7table.string('name');
8
9table
10.string('collection', 64)
11.notNullable()
12.references('collection')
13.inTable('directus_collections')
14.onDelete('CASCADE');
15
16table.string('item').notNullable();
17
18// Hash is managed on API side
19table.string('hash');
20
21table.timestamp('date_created').defaultTo(knex.fn.now());
22table.timestamp('date_updated').defaultTo(knex.fn.now());
23table.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
25table.uuid('user_updated').references('id').inTable('directus_users');
26});
27
28await knex.schema.alterTable('directus_collections', (table) => {
29table.boolean('versioning').notNullable().defaultTo(false);
30});
31
32await knex.schema.alterTable('directus_revisions', (table) => {
33table.uuid('version').references('id').inTable('directus_versions').onDelete('CASCADE');
34});
35}
36
37export async function down(knex: Knex): Promise<void> {
38await knex.schema.alterTable('directus_collections', (table) => {
39table.dropColumn('versioning');
40});
41
42await knex.schema.alterTable('directus_revisions', (table) => {
43table.dropColumn('version');
44});
45
46await knex.schema.dropTable('directus_versions');
47}
48