@directus/api
Version:
Directus is a real-time API and App dashboard for managing SQL database content
35 lines (33 loc) • 1.44 kB
JavaScript
import { useLogger } from "../../logger/index.js";
import { parseJSON } from "@directus/utils";
//#region src/database/migrations/20210802A-replace-groups.ts
async function up(knex) {
const logger = useLogger();
const dividerGroups = await knex.select("*").from("directus_fields").where("interface", "=", "group-divider");
for (const dividerGroup of dividerGroups) {
const newOptions = { showHeader: true };
if (dividerGroup.options) try {
const options = typeof dividerGroup.options === "string" ? parseJSON(dividerGroup.options) : dividerGroup.options;
if (options.icon) newOptions.headerIcon = options.icon;
if (options.color) newOptions.headerColor = options.color;
} catch (err) {
logger.warn(`Couldn't convert previous options from field ${dividerGroup.collection}.${dividerGroup.field}`);
logger.warn(err);
}
try {
await knex("directus_fields").update({
interface: "group-standard",
options: JSON.stringify(newOptions)
}).where("id", "=", dividerGroup.id);
} catch (err) {
logger.warn(`Couldn't update ${dividerGroup.collection}.${dividerGroup.field} to new group interface`);
logger.warn(err);
}
}
await knex("directus_fields").update({ interface: "group-standard" }).where({ interface: "group-raw" });
}
async function down(knex) {
await knex("directus_fields").update({ interface: "group-raw" }).where("interface", "=", "group-standard");
}
//#endregion
export { down, up };