diff --git a/src/genres/genres.service.ts b/src/genres/genres.service.ts index 37f1a66..5d73ab3 100644 --- a/src/genres/genres.service.ts +++ b/src/genres/genres.service.ts @@ -1,25 +1,38 @@ import { Injectable } from '@nestjs/common'; import { GenreDto } from './dto/genre.dto'; +import { InjectModel } from '@nestjs/mongoose'; +import { Genre } from './entities/genre.entity'; +import { Model } from 'mongoose'; @Injectable() export class GenresService { - create(dto: GenreDto) { - return 'This action adds a new genre'; + constructor(@InjectModel('Genre') private genreModel: Model) {} + + async create(dto: GenreDto): Promise { + const genre = new this.genreModel(dto); + return genre.save(); } - findAll() { - return `This action returns all genres`; + async findAll(page: number, genresPerPage: number): Promise { + let genres; + if (genresPerPage !== undefined) { + const skip = (page - 1) * genresPerPage; + genres = await this.genreModel.find().skip(skip).limit(genresPerPage); + } else { + genres = await this.genreModel.find(); + } + const total = await this.genreModel.countDocuments(); + return { + genres: genres, + genreCount: total, + }; } - findOne(id: number) { - return `This action returns a #${id} genre`; + async findId(id: string): Promise { + return this.genreModel.findById(id); } - update(id: number, dto: GenreDto) { - return `This action updates a #${id} genre`; - } - - remove(id: number) { - return `This action removes a #${id} genre`; + async remove(id: string): Promise { + return this.genreModel.findByIdAndDelete(id); } }