chore: criticism pagination

This commit is contained in:
Matin
2025-01-27 15:54:18 +03:30
parent a7e3172cb4
commit 239099bb15
8 changed files with 75 additions and 14 deletions
@@ -1,19 +1,27 @@
import { BadRequestException, Injectable } from "@nestjs/common";
import { CommonMessage, CriticismMessage } from "../../../common/enums/message.enum";
import { UsersService } from "../../users/providers/users.service";
import { PaginationUtils } from "../../utils/providers/pagination.utils";
import { CreateCriticismDto } from "../DTO/create-criticism.dto";
import { SearchCriticismQueryDto } from "../DTO/search-criticism-query.dto";
import { CriticismRepository } from "../repositories/criticisms.repository";
@Injectable()
export class CriticismsService {
constructor(private readonly criticismRepository: CriticismRepository) {}
constructor(
private readonly criticismRepository: CriticismRepository,
private readonly usersService: UsersService,
) {}
async create(createDto: CreateCriticismDto) {
async create(createDto: CreateCriticismDto, userId: string) {
const { user } = await this.usersService.findOneById(userId);
const files = createDto.files.map((file) => {
return { fileUrl: file };
});
const criticism = this.criticismRepository.create({
...createDto,
user,
files,
});
await this.criticismRepository.save(criticism);
@@ -25,10 +33,25 @@ export class CriticismsService {
//##################################### ##
async findAll() {
const criticisms = await this.criticismRepository.find();
async findAll(queryDto: SearchCriticismQueryDto) {
const { limit, skip } = PaginationUtils(queryDto);
const queryBuilder = this.criticismRepository.createQueryBuilder("criticism");
if (queryDto.since) {
queryBuilder.andWhere("criticism.createdAt >= :since", { since: queryDto.since });
}
if (queryDto.q) {
queryBuilder.andWhere("criticism.title LIKE :q", { q: `%${queryDto.q}%` });
}
queryBuilder.orderBy("criticism.createdAt", "DESC");
const [criticisms, count] = await queryBuilder.skip(skip).take(limit).getManyAndCount();
return {
criticisms,
count,
};
}