directus

Форк
0
41 строка · 1.2 Кб
1
import type { KNEX_TYPES } from '@directus/constants';
2
import type { Options } from '../types.js';
3
import { SchemaHelper } from '../types.js';
4
import { useEnv } from '@directus/env';
5

6
const env = useEnv();
7

8
export class SchemaHelperCockroachDb extends SchemaHelper {
9
	override async changeToType(
10
		table: string,
11
		column: string,
12
		type: (typeof KNEX_TYPES)[number],
13
		options: Options = {},
14
	): Promise<void> {
15
		await this.changeToTypeByCopy(table, column, type, options);
16
	}
17

18
	override constraintName(existingName: string): string {
19
		const suffix = '_replaced';
20

21
		// CockroachDB does not allow for dropping/creating constraints with the same
22
		// name in a single transaction. reference issue #14873
23
		if (existingName.endsWith(suffix)) {
24
			return existingName.substring(0, existingName.length - suffix.length);
25
		} else {
26
			return existingName + suffix;
27
		}
28
	}
29

30
	override async getDatabaseSize(): Promise<number | null> {
31
		try {
32
			const result = await this.knex
33
				.select(this.knex.raw('round(SUM(range_size_mb) * 1024 * 1024, 0) AS size'))
34
				.from(this.knex.raw('[SHOW RANGES FROM database ??]', [env['DB_DATABASE']]));
35

36
			return result[0]?.['size'] ? Number(result[0]?.['size']) : null;
37
		} catch {
38
			return null;
39
		}
40
	}
41
}
42

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

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

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

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