@directus/api
Version:
Directus is a real-time API and App dashboard for managing SQL database content
36 lines (34 loc) • 1.49 kB
JavaScript
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 };