import { IAlbumRepository } from '@app/domain'; import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { In, Repository } from 'typeorm'; import { AlbumEntity } from '../entities'; @Injectable() export class AlbumRepository implements IAlbumRepository { constructor(@InjectRepository(AlbumEntity) private repository: Repository) {} getByIds(ids: string[]): Promise { return this.repository.find({ where: { id: In(ids), }, relations: { owner: true, }, }); } async deleteAll(userId: string): Promise { await this.repository.delete({ ownerId: userId }); } getAll(): Promise { return this.repository.find({ relations: { owner: true, }, }); } async save(album: Partial) { const { id } = await this.repository.save(album); return this.repository.findOneOrFail({ where: { id } }); } }