UNPKG

@directus/api

Version:

Directus is a real-time API and App dashboard for managing SQL database content

36 lines (34 loc) 1.49 kB
import { getHelpers } from "../helpers/index.js"; //#region src/database/migrations/20230823A-add-content-versioning.ts async function up(knex) { const helpers = getHelpers(knex); await knex.schema.createTable("directus_versions", (table) => { table.uuid("id").primary().notNullable(); table.string("key", 64).notNullable(); table.string("name"); table.string("collection", helpers.schema.getTableNameMaxLength()).notNullable().references("collection").inTable("directus_collections").onDelete("CASCADE"); table.string("item").notNullable(); table.string("hash"); table.timestamp("date_created").defaultTo(knex.fn.now()); table.timestamp("date_updated").defaultTo(knex.fn.now()); table.uuid("user_created").references("id").inTable("directus_users").onDelete("SET NULL"); table.uuid("user_updated").references("id").inTable("directus_users"); }); await knex.schema.alterTable("directus_collections", (table) => { table.boolean("versioning").notNullable().defaultTo(false); }); await knex.schema.alterTable("directus_revisions", (table) => { table.uuid("version").references("id").inTable("directus_versions").onDelete("CASCADE"); }); } async function down(knex) { await knex.schema.alterTable("directus_collections", (table) => { table.dropColumn("versioning"); }); await knex.schema.alterTable("directus_revisions", (table) => { table.dropColumn("version"); }); await knex.schema.dropTable("directus_versions"); } //#endregion export { down, up };