mirror of
https://github.com/Art051/immich.git
synced 2025-08-11 19:29:00 +00:00
chore(server): Move library watcher to microservices (#7533)
* move watcher init to micro * document watcher recovery * chore: fix lint * add try lock * use global library watch lock * fix: ensure lock stays on * fix: mocks * unit test for library watch lock * move statement to correct test * fix: correct return type of try lock * fix: tests * add library teardown * add chokidar error handler * make event strings an enum * wait for event refactor * refactor event type mocks * expect correct error * don't release lock in teardown * chore: lint * use enum * fix mock * fix lint * fix watcher await * remove await * simplify typing * remove async * Revert "remove async" This reverts commit 84ab5abac487532c79a7d770869b08fbba1294bf. * can now change watch settings at runtime * fix lint * only watch libraries if enabled --------- Co-authored-by: mertalev <101130780+mertalev@users.noreply.github.com> Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
This commit is contained in:
committed by
GitHub
parent
3278dcbcbe
commit
4cb0f37918
@@ -19,6 +19,7 @@ export enum DatabaseLock {
|
||||
Migrations = 200,
|
||||
StorageTemplateMigration = 420,
|
||||
CLIPDimSize = 512,
|
||||
LibraryWatch = 1337,
|
||||
}
|
||||
|
||||
export const extName: Record<DatabaseExtension, string> = {
|
||||
@@ -46,6 +47,7 @@ export interface IDatabaseRepository {
|
||||
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>;
|
||||
}
|
||||
|
||||
@@ -31,6 +31,14 @@ export interface WatchEvents {
|
||||
onError(error: Error): void;
|
||||
}
|
||||
|
||||
export enum StorageEventType {
|
||||
READY = 'ready',
|
||||
ADD = 'add',
|
||||
CHANGE = 'change',
|
||||
UNLINK = 'unlink',
|
||||
ERROR = 'error',
|
||||
}
|
||||
|
||||
export interface IStorageRepository {
|
||||
createZipStream(): ImmichZipStream;
|
||||
createReadStream(filepath: string, mimeType?: string | null): Promise<ImmichReadStream>;
|
||||
|
||||
Reference in New Issue
Block a user