directus

Форк
0
/
apply-snapshot.ts 
25 строк · 1.0 Кб
1
import type { SchemaOverview } from '@directus/types';
2
import type { Knex } from 'knex';
3
import { getCache } from '../cache.js';
4
import getDatabase from '../database/index.js';
5
import type { Snapshot, SnapshotDiff } from '../types/index.js';
6
import { applyDiff } from './apply-diff.js';
7
import { getSchema } from './get-schema.js';
8
import { getSnapshot } from './get-snapshot.js';
9
import { getSnapshotDiff } from './get-snapshot-diff.js';
10

11
export async function applySnapshot(
12
	snapshot: Snapshot,
13
	options?: { database?: Knex; schema?: SchemaOverview; current?: Snapshot; diff?: SnapshotDiff },
14
): Promise<void> {
15
	const database = options?.database ?? getDatabase();
16
	const schema = options?.schema ?? (await getSchema({ database, bypassCache: true }));
17
	const { systemCache } = getCache();
18

19
	const current = options?.current ?? (await getSnapshot({ database, schema }));
20
	const snapshotDiff = options?.diff ?? getSnapshotDiff(current, snapshot);
21

22
	await applyDiff(current, snapshotDiff, { database, schema });
23

24
	await systemCache?.clear();
25
}
26

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

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

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

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