Skip to content

Commit

Permalink
add find all method for page module
Browse files Browse the repository at this point in the history
  • Loading branch information
bahram1249 committed Jul 3, 2024
1 parent 5985a2a commit 78658b0
Show file tree
Hide file tree
Showing 2 changed files with 49 additions and 1 deletion.
9 changes: 9 additions & 0 deletions apps/e-commerce/src/page/page.controller.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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({
Expand All @@ -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)
Expand Down
41 changes: 40 additions & 1 deletion apps/e-commerce/src/page/page.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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();
Expand Down

0 comments on commit 78658b0

Please sign in to comment.