Browse Source

chore(server): set relations for `getByIds` (#4855)

Mert 1 year ago
parent
commit
9e7a32804b

+ 7 - 1
server/src/domain/person/person.service.ts

@@ -216,7 +216,13 @@ export class PersonService {
       return true;
     }
 
-    const [asset] = await this.assetRepository.getByIds([id]);
+    const relations = {
+      exifInfo: true,
+      faces: {
+        person: true,
+      },
+    };
+    const [asset] = await this.assetRepository.getByIds([id], relations);
     if (!asset || !asset.resizePath || asset.faces?.length > 0) {
       return false;
     }

+ 2 - 1
server/src/domain/repositories/asset.repository.ts

@@ -1,4 +1,5 @@
 import { AssetEntity, AssetType, ExifEntity } from '@app/infra/entities';
+import { FindOptionsRelations } from 'typeorm';
 import { Paginated, PaginationOptions } from '../domain.util';
 
 export type AssetStats = Record<AssetType, number>;
@@ -99,7 +100,7 @@ export const IAssetRepository = 'IAssetRepository';
 export interface IAssetRepository {
   create(asset: AssetCreate): Promise<AssetEntity>;
   getByDate(ownerId: string, date: Date): Promise<AssetEntity[]>;
-  getByIds(ids: string[]): Promise<AssetEntity[]>;
+  getByIds(ids: string[], relations?: FindOptionsRelations<AssetEntity>): Promise<AssetEntity[]>;
   getByDayOfYear(ownerId: string, monthDay: MonthDay): Promise<AssetEntity[]>;
   getByChecksum(userId: string, checksum: Buffer): Promise<AssetEntity | null>;
   getByAlbumId(pagination: PaginationOptions, albumId: string): Paginated<AssetEntity>;

+ 8 - 5
server/src/infra/repositories/asset.repository.ts

@@ -104,10 +104,9 @@ export class AssetRepository implements IAssetRepository {
       .getMany();
   }
 
-  getByIds(ids: string[]): Promise<AssetEntity[]> {
-    return this.repository.find({
-      where: { id: In(ids) },
-      relations: {
+  getByIds(ids: string[], relations?: FindOptionsRelations<AssetEntity>): Promise<AssetEntity[]> {
+    if (!relations) {
+      relations = {
         exifInfo: true,
         smartInfo: true,
         tags: true,
@@ -115,7 +114,11 @@ export class AssetRepository implements IAssetRepository {
           person: true,
         },
         stack: true,
-      },
+      };
+    }
+    return this.repository.find({
+      where: { id: In(ids) },
+      relations,
       withDeleted: true,
     });
   }