directus
52 строки · 1.5 Кб
1import { parseJSON } from '@directus/utils';
2import type { Knex } from 'knex';
3import { useLogger } from '../../logger.js';
4
5export async function up(knex: Knex): Promise<void> {
6const logger = useLogger();
7
8const dividerGroups = await knex.select('*').from('directus_fields').where('interface', '=', 'group-divider');
9
10for (const dividerGroup of dividerGroups) {
11const newOptions: { showHeader: true; headerIcon?: string; headerColor?: string } = { showHeader: true };
12
13if (dividerGroup.options) {
14try {
15const options =
16typeof dividerGroup.options === 'string' ? parseJSON(dividerGroup.options) : dividerGroup.options;
17
18if (options.icon) newOptions.headerIcon = options.icon;
19if (options.color) newOptions.headerColor = options.color;
20} catch (err: any) {
21logger.warn(`Couldn't convert previous options from field ${dividerGroup.collection}.${dividerGroup.field}`);
22logger.warn(err);
23}
24}
25
26try {
27await knex('directus_fields')
28.update({
29interface: 'group-standard',
30options: JSON.stringify(newOptions),
31})
32.where('id', '=', dividerGroup.id);
33} catch (err: any) {
34logger.warn(`Couldn't update ${dividerGroup.collection}.${dividerGroup.field} to new group interface`);
35logger.warn(err);
36}
37}
38
39await knex('directus_fields')
40.update({
41interface: 'group-standard',
42})
43.where({ interface: 'group-raw' });
44}
45
46export async function down(knex: Knex): Promise<void> {
47await knex('directus_fields')
48.update({
49interface: 'group-raw',
50})
51.where('interface', '=', 'group-standard');
52}
53