import { AssetEntity, AssetFaceEntity, PersonEntity } from '@app/infra/entities'; export const IPersonRepository = 'IPersonRepository'; export interface PersonSearchOptions { minimumFaceCount: number; withHidden: boolean; } export interface AssetFaceId { assetId: string; personId: string; } export interface UpdateFacesData { oldPersonId: string; newPersonId: string; } export interface IPersonRepository { getAll(): Promise; getAllWithoutThumbnail(): Promise; getAllForUser(userId: string, options: PersonSearchOptions): Promise; getAllWithoutFaces(): Promise; getById(personId: string): Promise; getByName(userId: string, personName: string): Promise; getAssets(personId: string): Promise; prepareReassignFaces(data: UpdateFacesData): Promise; reassignFaces(data: UpdateFacesData): Promise; create(entity: Partial): Promise; update(entity: Partial): Promise; delete(entity: PersonEntity): Promise; deleteAll(): Promise; getAllFaces(): Promise; getFacesByIds(ids: AssetFaceId[]): Promise; getRandomFace(personId: string): Promise; createFace(entity: Partial): Promise; }