import { Insertable, Updateable } from 'kysely'; import { Albums } from 'src/db'; import { AlbumUserCreateDto } from 'src/dtos/album.dto'; import { AlbumEntity } from 'src/entities/album.entity'; import { IBulkAsset } from 'src/utils/asset.util'; export const IAlbumRepository = 'IAlbumRepository'; export interface AlbumAssetCount { albumId: string; assetCount: number; startDate: Date | null; endDate: Date | null; } export interface AlbumInfoOptions { withAssets: boolean; } export interface IAlbumRepository extends IBulkAsset { getById(id: string, options: AlbumInfoOptions): Promise; getByAssetId(ownerId: string, assetId: string): Promise; removeAsset(assetId: string): Promise; getMetadataForIds(ids: string[]): 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; create(album: Insertable, assetIds: string[], albumUsers: AlbumUserCreateDto[]): Promise; update(id: string, album: Updateable): Promise; delete(id: string): Promise; updateThumbnails(): Promise; }