mirror of
https://github.com/immich-app/immich.git
synced 2026-07-08 21:09:10 +08:00
Some checks are pending
CodeQL / Analyze (javascript) (push) Waiting to run
CodeQL / Analyze (python) (push) Waiting to run
Docker / Build and Push (., cpu, server/Dockerfile, immich-server, linux/amd64,linux/arm64) (push) Waiting to run
Docker / Build and Push (machine-learning, armnn, machine-learning/Dockerfile, immich-machine-learning, linux/arm64, -armnn) (push) Waiting to run
Docker / Build and Push (machine-learning, cpu, machine-learning/Dockerfile, immich-machine-learning, linux/amd64,linux/arm64) (push) Waiting to run
Docker / Build and Push (machine-learning, cuda, machine-learning/Dockerfile, immich-machine-learning, linux/amd64, -cuda) (push) Waiting to run
Docker / Build and Push (machine-learning, openvino, machine-learning/Dockerfile, immich-machine-learning, linux/amd64, -openvino) (push) Waiting to run
Static Code Analysis / Run Dart Code Analysis (push) Waiting to run
Test / Server (push) Waiting to run
Test / CLI (push) Waiting to run
Test / CLI (Windows) (push) Waiting to run
Test / Web (push) Waiting to run
Test / End-to-End Tests (push) Waiting to run
Test / Mobile (push) Waiting to run
Test / Machine Learning (push) Waiting to run
Test / ShellCheck (push) Waiting to run
Test / OpenAPI Clients (push) Waiting to run
Test / TypeORM Checks (push) Waiting to run
* update update logic refactor * update tests * get version range through repo method, make tests more static * move "should work" test
58 lines
1.7 KiB
TypeScript
58 lines
1.7 KiB
TypeScript
export enum DatabaseExtension {
|
|
CUBE = 'cube',
|
|
EARTH_DISTANCE = 'earthdistance',
|
|
VECTOR = 'vector',
|
|
VECTORS = 'vectors',
|
|
}
|
|
|
|
export type VectorExtension = DatabaseExtension.VECTOR | DatabaseExtension.VECTORS;
|
|
|
|
export enum VectorIndex {
|
|
CLIP = 'clip_index',
|
|
FACE = 'face_index',
|
|
}
|
|
|
|
export enum DatabaseLock {
|
|
GeodataImport = 100,
|
|
Migrations = 200,
|
|
StorageTemplateMigration = 420,
|
|
CLIPDimSize = 512,
|
|
LibraryWatch = 1337,
|
|
GetSystemConfig = 69,
|
|
}
|
|
|
|
export const EXTENSION_NAMES: Record<DatabaseExtension, string> = {
|
|
cube: 'cube',
|
|
earthdistance: 'earthdistance',
|
|
vector: 'pgvector',
|
|
vectors: 'pgvecto.rs',
|
|
} as const;
|
|
|
|
export interface ExtensionVersion {
|
|
availableVersion: string | null;
|
|
installedVersion: string | null;
|
|
}
|
|
|
|
export interface VectorUpdateResult {
|
|
restartRequired: boolean;
|
|
}
|
|
|
|
export const IDatabaseRepository = 'IDatabaseRepository';
|
|
|
|
export interface IDatabaseRepository {
|
|
getExtensionVersion(extension: DatabaseExtension): Promise<ExtensionVersion>;
|
|
getExtensionVersionRange(extension: VectorExtension): string;
|
|
getPostgresVersion(): Promise<string>;
|
|
getPostgresVersionRange(): string;
|
|
createExtension(extension: DatabaseExtension): Promise<void>;
|
|
updateExtension(extension: DatabaseExtension, version?: string): Promise<void>;
|
|
updateVectorExtension(extension: VectorExtension, version?: string): Promise<VectorUpdateResult>;
|
|
reindex(index: VectorIndex): Promise<void>;
|
|
shouldReindex(name: VectorIndex): Promise<boolean>;
|
|
runMigrations(options?: { transaction?: 'all' | 'none' | 'each' }): Promise<void>;
|
|
withLock<R>(lock: DatabaseLock, callback: () => Promise<R>): Promise<R>;
|
|
tryLock(lock: DatabaseLock): Promise<boolean>;
|
|
isBusy(lock: DatabaseLock): boolean;
|
|
wait(lock: DatabaseLock): Promise<void>;
|
|
}
|