directus

Форк
0
/
20210802A-replace-groups.ts 
52 строки · 1.5 Кб
1
import { parseJSON } from '@directus/utils';
2
import type { Knex } from 'knex';
3
import { useLogger } from '../../logger.js';
4

5
export async function up(knex: Knex): Promise<void> {
6
	const logger = useLogger();
7

8
	const dividerGroups = await knex.select('*').from('directus_fields').where('interface', '=', 'group-divider');
9

10
	for (const dividerGroup of dividerGroups) {
11
		const newOptions: { showHeader: true; headerIcon?: string; headerColor?: string } = { showHeader: true };
12

13
		if (dividerGroup.options) {
14
			try {
15
				const options =
16
					typeof dividerGroup.options === 'string' ? parseJSON(dividerGroup.options) : dividerGroup.options;
17

18
				if (options.icon) newOptions.headerIcon = options.icon;
19
				if (options.color) newOptions.headerColor = options.color;
20
			} catch (err: any) {
21
				logger.warn(`Couldn't convert previous options from field ${dividerGroup.collection}.${dividerGroup.field}`);
22
				logger.warn(err);
23
			}
24
		}
25

26
		try {
27
			await knex('directus_fields')
28
				.update({
29
					interface: 'group-standard',
30
					options: JSON.stringify(newOptions),
31
				})
32
				.where('id', '=', dividerGroup.id);
33
		} catch (err: any) {
34
			logger.warn(`Couldn't update ${dividerGroup.collection}.${dividerGroup.field} to new group interface`);
35
			logger.warn(err);
36
		}
37
	}
38

39
	await knex('directus_fields')
40
		.update({
41
			interface: 'group-standard',
42
		})
43
		.where({ interface: 'group-raw' });
44
}
45

46
export async function down(knex: Knex): Promise<void> {
47
	await knex('directus_fields')
48
		.update({
49
			interface: 'group-raw',
50
		})
51
		.where('interface', '=', 'group-standard');
52
}
53

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.