directus
1import { SchemaHelper } from '../types.js';
2
3export class SchemaHelperSQLite extends SchemaHelper {
4override async preColumnChange(): Promise<boolean> {
5const foreignCheckStatus = (await this.knex.raw('PRAGMA foreign_keys'))[0].foreign_keys === 1;
6
7if (foreignCheckStatus) {
8await this.knex.raw('PRAGMA foreign_keys = OFF');
9}
10
11return foreignCheckStatus;
12}
13
14override async postColumnChange(): Promise<void> {
15await this.knex.raw('PRAGMA foreign_keys = ON');
16}
17
18override async getDatabaseSize(): Promise<number | null> {
19try {
20const result = await this.knex.raw(
21'SELECT page_count * page_size as "size" FROM pragma_page_count(), pragma_page_size();',
22);
23
24return result[0]?.['size'] ? Number(result[0]?.['size']) : null;
25} catch {
26return null;
27}
28}
29}
30