From 78658b015569f59856de94ac73dad662ad5bb824 Mon Sep 17 00:00:00 2001 From: bahram rajabi Date: Wed, 3 Jul 2024 23:19:56 +0330 Subject: [PATCH] add find all method for page module --- apps/e-commerce/src/page/page.controller.ts | 9 +++++ apps/e-commerce/src/page/page.service.ts | 41 ++++++++++++++++++++- 2 files changed, 49 insertions(+), 1 deletion(-) diff --git a/apps/e-commerce/src/page/page.controller.ts b/apps/e-commerce/src/page/page.controller.ts index ef2aa18c..ed97da3c 100644 --- a/apps/e-commerce/src/page/page.controller.ts +++ b/apps/e-commerce/src/page/page.controller.ts @@ -4,11 +4,13 @@ import { HttpCode, HttpStatus, Param, + Query, UseInterceptors, } from '@nestjs/common'; import { JsonResponseTransformInterceptor } from '@rahino/response/interceptor'; import { ApiOperation, ApiTags } from '@nestjs/swagger'; import { PageService } from './page.service'; +import { ListFilter } from '@rahino/query-filter'; @ApiTags('Pages') @Controller({ @@ -19,6 +21,13 @@ import { PageService } from './page.service'; export class PageController { constructor(private service: PageService) {} + @ApiOperation({ description: 'show total pages' }) + @Get('/') + @HttpCode(HttpStatus.OK) + async findAll(@Query() filter: ListFilter) { + return await this.service.findAll(filter); + } + @ApiOperation({ description: 'show page by given id' }) @Get('/slug/:slug') @HttpCode(HttpStatus.OK) diff --git a/apps/e-commerce/src/page/page.service.ts b/apps/e-commerce/src/page/page.service.ts index 9bbec9bd..269694f1 100644 --- a/apps/e-commerce/src/page/page.service.ts +++ b/apps/e-commerce/src/page/page.service.ts @@ -4,10 +4,49 @@ import { QueryOptionsBuilder } from '@rahino/query-filter/sequelize-query-builde import { Op, Sequelize } from 'sequelize'; import * as _ from 'lodash'; import { ECPage } from '@rahino/database/models/ecommerce-eav/ec-page.entity'; +import { ListFilter } from '@rahino/query-filter'; @Injectable() export class PageService { - constructor(@InjectModel(ECPage) private repository: typeof ECPage) {} + constructor( + @InjectModel(ECPage) private readonly repository: typeof ECPage, + ) {} + + async findAll(filter: ListFilter) { + let queryBuilder = new QueryOptionsBuilder(); + queryBuilder = queryBuilder.filter( + Sequelize.where( + Sequelize.fn('isnull', Sequelize.col('ECPage.isDeleted'), 0), + { + [Op.eq]: 0, + }, + ), + ); + + const count = await this.repository.count(queryBuilder.build()); + + queryBuilder = queryBuilder + .attributes([ + 'id', + 'title', + 'slug', + 'metaTitle', + 'metaDescription', + 'metaKeywords', + 'createdAt', + 'updatedAt', + ]) + .order({ sortOrder: filter.sortOrder, orderBy: filter.orderBy }) + .limit(filter.limit) + .offset(filter.offset); + + const result = await this.repository.findAll(queryBuilder.build()); + + return { + result: result, + total: count, + }; + } async findBySlug(slug: string) { let queryBuilder = new QueryOptionsBuilder();