From 5819e1e2de4392df7a00adcd54203f824033d3e0 Mon Sep 17 00:00:00 2001 From: Jonathan Jogenfors Date: Sat, 8 Feb 2025 01:30:16 +0100 Subject: [PATCH] wip --- server/src/queries/asset.repository.sql | 3 +++ server/src/queries/library.repository.sql | 5 ++++- server/src/repositories/asset.repository.ts | 3 --- server/src/repositories/library.repository.ts | 3 +++ server/src/services/library.service.ts | 9 +++++++-- 5 files changed, 17 insertions(+), 6 deletions(-) diff --git a/server/src/queries/asset.repository.sql b/server/src/queries/asset.repository.sql index bfaf5966cec0f..3efc560b3b7ff 100644 --- a/server/src/queries/asset.repository.sql +++ b/server/src/queries/asset.repository.sql @@ -263,6 +263,9 @@ with where "assets"."deletedAt" is null and "assets"."isVisible" = $2 + and "assets"."fileCreatedAt" is not null + and "assets"."fileModifiedAt" is not null + and "assets"."localDateTime" is not null ) select "timeBucket", diff --git a/server/src/queries/library.repository.sql b/server/src/queries/library.repository.sql index b0b20fd8a2458..cbf9ce8edda3b 100644 --- a/server/src/queries/library.repository.sql +++ b/server/src/queries/library.repository.sql @@ -132,7 +132,10 @@ from inner join "assets" on "assets"."libraryId" = "libraries"."id" left join "exif" on "exif"."assetId" = "assets"."id" where - "libraries"."id" = $6 + "assets"."fileCreatedAt" is not null + and "assets"."fileModifiedAt" is not null + and "assets"."localDateTime" is not null + and "libraries"."id" = $6 group by "libraries"."id" select diff --git a/server/src/repositories/asset.repository.ts b/server/src/repositories/asset.repository.ts index 9458b82fb859f..d3ddd57d07047 100644 --- a/server/src/repositories/asset.repository.ts +++ b/server/src/repositories/asset.repository.ts @@ -138,9 +138,6 @@ export class AssetRepository implements IAssetRepository { ) .innerJoin('exif', 'a.id', 'exif.assetId') .selectAll('a') - .$narrowType<{ fileCreatedAt: NotNull }>() - .$narrowType<{ fileModifiedAt: NotNull }>() - .$narrowType<{ localDateTime: NotNull }>() .select((eb) => eb.fn.toJson(eb.table('exif')).as('exifInfo')), ) .selectFrom('res') diff --git a/server/src/repositories/library.repository.ts b/server/src/repositories/library.repository.ts index 0e1ec94c32f86..64881d38788e6 100644 --- a/server/src/repositories/library.repository.ts +++ b/server/src/repositories/library.repository.ts @@ -100,6 +100,9 @@ export class LibraryRepository implements ILibraryRepository { const stats = await this.db .selectFrom('libraries') .innerJoin('assets', 'assets.libraryId', 'libraries.id') + .where('assets.fileCreatedAt', 'is not', null) + .where('assets.fileModifiedAt', 'is not', null) + .where('assets.localDateTime', 'is not', null) .leftJoin('exif', 'exif.assetId', 'assets.id') .select((eb) => eb.fn diff --git a/server/src/services/library.service.ts b/server/src/services/library.service.ts index 6aa75fcc43520..cd9f61c963767 100644 --- a/server/src/services/library.service.ts +++ b/server/src/services/library.service.ts @@ -574,9 +574,14 @@ export class LibraryService extends BaseService { } const mtime = stat.mtime; - const isTimeUpdated = !asset.fileModifiedAt || mtime.toISOString() !== asset.fileModifiedAt.toISOString(); - if (isTimeUpdated) { + if (!asset.fileModifiedAt || !asset.fileCreatedAt || !asset.localDateTime) { + this.logger.verbose(`Asset ${asset.originalPath} needs metadata extraction in library ${libraryId}`); + + return AssetSyncResult.UPDATE; + } + + if (mtime.toISOString() !== asset.fileModifiedAt.toISOString()) { this.logger.verbose( `Asset ${asset.originalPath} modification time changed from ${asset.fileModifiedAt?.toISOString()} to ${mtime.toISOString()}, queuing re-import in library ${libraryId}`, );