UNPKG

@directus/api

Version:

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

53 lines (52 loc) 2.15 kB
//#region src/database/migrations/20230927A-themes.ts async function up(knex) { /** * Knex doesn't support setting defaults to null (you'll end up with `NULL::character varying`), * so we'll have to create a new column, copy over the relevant bits, and remove the old */ await knex.schema.alterTable("directus_users", (table) => { table.string("appearance"); }); await knex("directus_users").update({ appearance: "dark" }).where({ theme: "dark" }); await knex("directus_users").update({ appearance: "light" }).where({ theme: "light" }); await knex.schema.alterTable("directus_users", (table) => { table.dropColumn("theme"); table.string("theme_dark"); table.string("theme_light"); table.json("theme_light_overrides"); table.json("theme_dark_overrides"); }); await knex("directus_settings").update({ project_color: "#6644ff" }).whereNull("project_color"); await knex.schema.alterTable("directus_settings", (table) => { table.string("project_color").defaultTo("#6644FF").notNullable().alter(); table.uuid("public_favicon").references("directus_files.id"); table.string("default_appearance").defaultTo("auto").notNullable(); table.string("default_theme_light"); table.json("theme_light_overrides"); table.string("default_theme_dark"); table.json("theme_dark_overrides"); }); } async function down(knex) { await knex.schema.alterTable("directus_users", (table) => { table.renameColumn("appearance", "theme"); }); await knex.schema.alterTable("directus_users", (table) => { table.string("theme").defaultTo("auto").alter(); table.dropColumn("theme_dark"); table.dropColumn("theme_light"); table.dropColumn("theme_light_overrides"); table.dropColumn("theme_dark_overrides"); }); await knex.schema.alterTable("directus_settings", (table) => { table.string("project_color").defaultTo(null).nullable().alter(); table.dropColumn("public_favicon"); table.dropColumn("default_appearance"); table.dropColumn("default_theme_light"); table.dropColumn("theme_light_overrides"); table.dropColumn("default_theme_dark"); table.dropColumn("theme_dark_overrides"); }); } //#endregion export { down, up };