import { Version } from '../domain.constant'; export enum DatabaseExtension { CUBE = 'cube', EARTH_DISTANCE = 'earthdistance', VECTORS = 'vectors', } export enum DatabaseLock { GeodataImport = 100, StorageTemplateMigration = 420, CLIPDimSize = 512, } export const IDatabaseRepository = 'IDatabaseRepository'; export interface IDatabaseRepository { getExtensionVersion(extName: string): Promise; getPostgresVersion(): Promise; createExtension(extension: DatabaseExtension): Promise; runMigrations(options?: { transaction?: 'all' | 'none' | 'each' }): Promise; withLock(lock: DatabaseLock, callback: () => Promise): Promise; isBusy(lock: DatabaseLock): boolean; wait(lock: DatabaseLock): Promise; }