import { AlbumEntity } from '@app/infra/entities'; export const IAlbumRepository = 'IAlbumRepository'; export interface AlbumAssetCount { albumId: string; assetCount: number; } export interface AlbumInfoOptions { withAssets: boolean; } export interface AlbumAsset { albumId: string; assetId: string; } export interface AlbumAssets { albumId: string; assetIds: string[]; } export interface IAlbumRepository { getById(id: string, options: AlbumInfoOptions): Promise; getByIds(ids: string[]): Promise; getByAssetId(ownerId: string, assetId: string): Promise; addAssets(assets: AlbumAssets): Promise; getAssetIds(albumId: string, assetIds?: string[]): Promise>; hasAsset(asset: AlbumAsset): Promise; removeAsset(assetId: string): Promise; removeAssets(assets: AlbumAssets): Promise; getAssetCountForIds(ids: string[]): Promise; getInvalidThumbnail(): Promise; getOwned(ownerId: string): Promise; getShared(ownerId: string): Promise; getNotShared(ownerId: string): Promise; restoreAll(userId: string): Promise; softDeleteAll(userId: string): Promise; deleteAll(userId: string): Promise; getAll(): Promise; create(album: Partial): Promise; update(album: Partial): Promise; delete(album: AlbumEntity): Promise; updateThumbnails(): Promise; }