directus

Форк
0
/
get-default-index-name.ts 
26 строк · 937.0 Байт
1
import { getSimpleHash } from '@directus/utils';
2
/**
3
 * Generate an index name for a given collection + fields combination.
4
 *
5
 * Is based on the default index name generation of knex, but limits the index to a maximum of 64
6
 * characters (the max length for MySQL and MariaDB).
7
 *
8
 * @see
9
 * https://github.com/knex/knex/blob/fff6eb15d7088d4198650a2c6e673dedaf3b8f36/lib/schema/tablecompiler.js#L282-L297
10
 */
11
export function getDefaultIndexName(
12
	type: 'unique' | 'foreign' | 'index',
13
	collection: string,
14
	fields: string | string[],
15
): string {
16
	if (!Array.isArray(fields)) fields = fields ? [fields] : [];
17
	const table = collection.replace(/\.|-/g, '_');
18
	const indexName = (table + '_' + fields.join('_') + '_' + type).toLowerCase();
19

20
	if (indexName.length <= 60) return indexName;
21

22
	const suffix = `__${getSimpleHash(indexName)}_${type}`;
23
	const prefix = indexName.substring(0, 60 - suffix.length);
24

25
	return `${prefix}${suffix}`;
26
}
27

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

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

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

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