From c3df45dc9a3afe84ddb3b1cd32f18df4bcb82e27 Mon Sep 17 00:00:00 2001 From: caturbgs Date: Wed, 22 Dec 2021 15:23:05 +0700 Subject: [PATCH] feat: add page size in all the rest API --- src/configurable/commission.service.ts | 8 ++-- src/configurable/configurable.controller.ts | 23 +++++++--- src/configurable/roles.service.ts | 12 ++--- .../history-price/history-price.service.ts | 5 ++- src/product/product-categories.service.ts | 6 +-- src/product/product-sub-categories.service.ts | 6 +-- src/product/product.controller.ts | 18 +++++++- src/product/product.service.ts | 30 +++++-------- src/transaction/transaction.controller.ts | 31 +++++++------ src/transaction/transaction.service.ts | 44 ++++++++++--------- src/users/partner/partner.service.ts | 14 ++---- src/users/supplier/supplier.service.ts | 14 ++---- src/users/users.controller.ts | 26 ++++++++--- src/users/users.service.ts | 22 +++------- 14 files changed, 135 insertions(+), 124 deletions(-) diff --git a/src/configurable/commission.service.ts b/src/configurable/commission.service.ts index 4b605a4..cf10d3b 100644 --- a/src/configurable/commission.service.ts +++ b/src/configurable/commission.service.ts @@ -1,8 +1,6 @@ import { HttpException, HttpStatus, Injectable } from '@nestjs/common'; import { EntityNotFoundError, Repository } from 'typeorm'; -import { Roles } from './entities/roles.entity'; import { InjectRepository } from '@nestjs/typeorm'; -import { UpdateUserDto } from '../users/dto/update-user.dto'; import { CommissionSetting } from './entities/commission_setting.entity'; @Injectable() @@ -12,10 +10,10 @@ export class CommissionService { private commissionRepository: Repository, ) {} - findAllCommission(page) { + findAllCommission(page, pageSize?) { return this.commissionRepository.findAndCount({ - skip: page * 10, - take: 10, + skip: page * (pageSize || 10), + take: pageSize || 10, order: { version: 'DESC', }, diff --git a/src/configurable/configurable.controller.ts b/src/configurable/configurable.controller.ts index e4474da..c814ebe 100644 --- a/src/configurable/configurable.controller.ts +++ b/src/configurable/configurable.controller.ts @@ -30,8 +30,11 @@ export class ConfigurableController { ) {} @Get('/roles') - async findAll(@Query('page') page: number) { - const [data, count] = await this.roleService.findAllRoles(page); + async findAll( + @Query('page') page: number, + @Query('pageSize') pageSize: number, + ) { + const [data, count] = await this.roleService.findAllRoles(page, pageSize); return { data, @@ -42,8 +45,14 @@ export class ConfigurableController { } @Get('/commission') - async findCommission(@Query('page') page: number) { - const [data, count] = await this.commissionService.findAllCommission(page); + async findCommission( + @Query('page') page: number, + @Query('pageSize') pageSize: number, + ) { + const [data, count] = await this.commissionService.findAllCommission( + page, + pageSize, + ); return { data, @@ -54,9 +63,13 @@ export class ConfigurableController { } @Get('/roles/for-membership') - async findAllForMembership(@Query('page') page: number) { + async findAllForMembership( + @Query('page') page: number, + @Query('pageSize') pageSize: number, + ) { const [data, count] = await this.roleService.findAllRolesForCreateMember( page, + pageSize, ); return { diff --git a/src/configurable/roles.service.ts b/src/configurable/roles.service.ts index 2f2424e..75b46bd 100644 --- a/src/configurable/roles.service.ts +++ b/src/configurable/roles.service.ts @@ -10,20 +10,20 @@ export class RoleService { private rolesRepository: Repository, ) {} - findAllRoles(page) { + findAllRoles(page, pageSize?) { return this.rolesRepository.findAndCount({ - skip: page * 10, - take: 10, + skip: page * (pageSize || 10), + take: pageSize || 10, order: { version: 'DESC', }, }); } - findAllRolesForCreateMember(page) { + findAllRolesForCreateMember(page, pageSize?) { return this.rolesRepository.findAndCount({ - skip: page * 10, - take: 10, + skip: page * (pageSize || 10), + take: pageSize || 10, where: { id: Not( In([ diff --git a/src/product/history-price/history-price.service.ts b/src/product/history-price/history-price.service.ts index a259ec2..ee1325f 100644 --- a/src/product/history-price/history-price.service.ts +++ b/src/product/history-price/history-price.service.ts @@ -38,6 +38,7 @@ export class ProductHistoryPriceService { page: number, productId: string, supplierId: string, + pageSize?: number, ) { try { const query = this.productHistoryPriceService @@ -54,8 +55,8 @@ export class ProductHistoryPriceService { const data = await query .orderBy('product_history_price.createdAt', 'DESC') - .skip(page * 10) - .take(10) + .skip(page * (pageSize || 10)) + .take(pageSize || 10) .getMany(); const totalData = await query.getCount(); diff --git a/src/product/product-categories.service.ts b/src/product/product-categories.service.ts index 6aa1e30..5afab21 100644 --- a/src/product/product-categories.service.ts +++ b/src/product/product-categories.service.ts @@ -36,10 +36,10 @@ export class ProductCategoriesService { ); } - findAll(page) { + findAll(page, pageSize?) { return this.productCategoriesRepository.findAndCount({ - skip: page * 10, - take: 10, + skip: page * (pageSize || 10), + take: pageSize || 10, order: { version: 'DESC', }, diff --git a/src/product/product-sub-categories.service.ts b/src/product/product-sub-categories.service.ts index 6ad2644..98a5b22 100644 --- a/src/product/product-sub-categories.service.ts +++ b/src/product/product-sub-categories.service.ts @@ -44,7 +44,7 @@ export class ProductSubCategoriesService { ); } - async findAll(page, category: string) { + async findAll(page, category: string, pageSize?) { let filterCategories; if (category) { filterCategories = category.split(',').map((data) => data.trim()); @@ -61,8 +61,8 @@ export class ProductSubCategoriesService { } const data = await baseQuery - .skip(page * 10) - .take(10) + .skip(page * (pageSize || 10)) + .take(pageSize || 10) .getMany(); const totalData = await baseQuery.getCount(); diff --git a/src/product/product.controller.ts b/src/product/product.controller.ts index 557857a..6c012c4 100644 --- a/src/product/product.controller.ts +++ b/src/product/product.controller.ts @@ -72,6 +72,7 @@ export class ProductController { @Get('all') async findAll( @Query('page') page: number, + @Query('pageSize') pageSize: number, @Query('sub-category') subcategory: string, @Query('supplier') supplier: string, ) { @@ -79,6 +80,7 @@ export class ProductController { page, supplier == 'null' ? null : supplier, subcategory == 'null' ? null : subcategory, + pageSize, ); return { @@ -105,6 +107,7 @@ export class ProductController { @Get('by-categories-all') async findByCategoriesAll( @Query('page') page: number, + @Query('pageSize') pageSize: number, @Query('sub-category') subcategory: string, @Query('supplier') supplier: string, ) { @@ -112,6 +115,7 @@ export class ProductController { page, subcategory, supplier, + pageSize, ); return { @@ -143,8 +147,14 @@ export class ProductController { } @Get('categories') - async findAllCategories(@Query('page') page: number) { - const [data, count] = await this.productCategoriesService.findAll(page); + async findAllCategories( + @Query('page') page: number, + @Query('pageSize') pageSize: number, + ) { + const [data, count] = await this.productCategoriesService.findAll( + page, + pageSize, + ); return { data, @@ -157,11 +167,13 @@ export class ProductController { @Get('sub-categories') async findAllSubCategories( @Query('page') page: number, + @Query('pageSize') pageSize: number, @Query('category') category: string, ) { const data = await this.productSubCategoriesService.findAll( page, category == 'null' ? null : category, + pageSize, ); return { @@ -184,12 +196,14 @@ export class ProductController { async findPriceHistoryByProductId( @Param('id', ParseUUIDPipe) id: string, @Query('page') page: number, + @Query('pageSize') pageSize: number, @Query('supplier') supplier: string, ) { const data = await this.productHistoryPriceService.findOneByProductId( page, id, supplier, + pageSize, ); return { diff --git a/src/product/product.service.ts b/src/product/product.service.ts index e1c1b0a..e1fa8db 100644 --- a/src/product/product.service.ts +++ b/src/product/product.service.ts @@ -47,7 +47,12 @@ export class ProductService { return this.productRepository.findOneOrFail(result.identifiers[0].id); } - async findAll(page: number, supplier: string, subCategories: string) { + async findAll( + page: number, + supplier: string, + subCategories: string, + pageSize?: number, + ) { let filterSupplier, filterSubCategories; if (supplier) { @@ -61,10 +66,6 @@ export class ProductService { return data.trim(); }); } - // if (supplier.length > 0) { - // const dataSupplier = await this.supplierService.findByActiveAll(); - // supplier = dataSupplier.map((item) => item.id); - // } const baseQuery = this.productRepository .createQueryBuilder('product') @@ -72,9 +73,6 @@ export class ProductService { .leftJoin('sub_categories.category', 'category') .leftJoin('product.supplier', 'supplier') .where('supplier.status = :status', { status: true }) - // .where(`product.supplier_id = :supplier_id`, { - // supplier_id: In(supplier), - // }) .leftJoinAndMapOne( 'product.currentPrice', 'product.priceHistory', @@ -106,15 +104,9 @@ export class ProductService { }); } - // if (categories != 'null' && categories) { - // baseQuery.andWhere('sub_categories.category_id = :id', { - // id: categories, - // }); - // } - const data = await baseQuery - .offset(page * 10) - .limit(10) + .offset(page * (pageSize || 10)) + .limit(pageSize || 10) .getRawMany(); const totalData = await baseQuery.getCount(); @@ -156,7 +148,7 @@ export class ProductService { }; } - async findAllBySubCategories(page, subCategories, supplier) { + async findAllBySubCategories(page, subCategories, supplier, pageSize?) { if (supplier != 'null' && !supplier) { supplier = (await this.supplierService.findByActive()).id; } @@ -184,8 +176,8 @@ export class ProductService { } const data = await baseQuery - .skip(page * 10) - .take(10) + .skip(page * (pageSize || 10)) + .take(pageSize || 10) .getMany(); const totalData = await baseQuery.getCount(); diff --git a/src/transaction/transaction.controller.ts b/src/transaction/transaction.controller.ts index 25118c4..da3363e 100644 --- a/src/transaction/transaction.controller.ts +++ b/src/transaction/transaction.controller.ts @@ -1,17 +1,4 @@ -import { - Controller, - Get, - Post, - Body, - Patch, - Param, - Delete, - Request, - HttpStatus, - Query, - Put, - ParseUUIDPipe, -} from '@nestjs/common'; +import { Body, Controller, Get, HttpStatus, Param, ParseUUIDPipe, Post, Put, Query, Request } from '@nestjs/common'; import { TransactionService } from './transaction.service'; import { DistributeTransactionDto } from './dto/distribute-transaction.dto'; import { OrderTransactionDto } from './dto/order-transaction.dto'; @@ -101,10 +88,15 @@ export class TransactionController { } @Get('history') - async findByCategories(@Query('page') page: number, @Request() req) { + async findByCategories( + @Query('page') page: number, + @Query('pageSize') pageSize: number, + @Request() req, + ) { const data = await this.transactionService.transactionHistoryByUser( page, req.user.userId, + pageSize, ); return { @@ -115,11 +107,16 @@ export class TransactionController { } @Get('deposit-return') - async findDepositReturn(@Query('page') page: number, @Request() req) { + async findDepositReturn( + @Query('page') page: number, + @Query('pageSize') pageSize: number, + @Request() req, + ) { const [data, count] = await this.transactionService.getAllDepositReturnFromUser( req.user.userId, page, + pageSize, ); return { @@ -133,12 +130,14 @@ export class TransactionController { @Get('deposit-return/confirmation') async findDepositReturnConfirmation( @Query('page') page: number, + @Query('pageSize') pageSize: number, @Request() req, ) { const [data, count] = await this.transactionService.getAllDepositReturnToUser( req.user.userId, page, + pageSize, ); return { diff --git a/src/transaction/transaction.service.ts b/src/transaction/transaction.service.ts index 1d6ae06..1c12a1a 100644 --- a/src/transaction/transaction.service.ts +++ b/src/transaction/transaction.service.ts @@ -3,24 +3,14 @@ import { DistributeTransactionDto } from './dto/distribute-transaction.dto'; import { OrderTransactionDto } from './dto/order-transaction.dto'; import { InjectRepository } from '@nestjs/typeorm'; import { Transactions } from './entities/transactions.entity'; -import { - Connection, - EntityManager, - EntityNotFoundError, - Repository, -} from 'typeorm'; +import { Connection, EntityNotFoundError, Repository } from 'typeorm'; import { COA } from './entities/coa.entity'; import { TransactionJournal } from './entities/transaction-journal.entity'; import { CoaService } from './coa.service'; import * as uuid from 'uuid'; import { uniq } from 'lodash'; import { Decimal } from 'decimal.js'; -import { - balanceType, - coaType, - statusTransaction, - typeTransaction, -} from '../helper/enum-list'; +import { balanceType, coaType, statusTransaction, typeTransaction } from '../helper/enum-list'; import { ProductService } from '../product/product.service'; import { CreateJournalDto } from './dto/create-journal.dto'; import { UsersService } from 'src/users/users.service'; @@ -560,7 +550,11 @@ export class TransactionService { return transactionData; } - async transactionHistoryByUser(page: number, user: string) { + async transactionHistoryByUser( + page: number, + user: string, + pageSize?: number, + ) { const baseQuery = this.transactionRepository .createQueryBuilder('transaction') .select('transaction.id', 'id') @@ -578,8 +572,8 @@ export class TransactionService { // .leftJoinAndSelect('product_price.product', 'product'); const data = await baseQuery - .skip(page * 10) - .take(10) + .offset(page * (pageSize || 10)) + .limit(pageSize || 10) .getRawMany(); const totalData = await baseQuery.getCount(); @@ -614,10 +608,14 @@ export class TransactionService { } } - async getAllDepositReturnFromUser(user: string, page: number) { + async getAllDepositReturnFromUser( + user: string, + page: number, + pageSize?: number, + ) { return this.transactionRepository.findAndCount({ - skip: page * 10, - take: 10, + skip: page * (pageSize || 10), + take: pageSize || 10, where: { user: user, type: typeTransaction.DEPOSIT_RETURN, @@ -628,10 +626,14 @@ export class TransactionService { }); } - async getAllDepositReturnToUser(user: string, page: number) { + async getAllDepositReturnToUser( + user: string, + page: number, + pageSize?: number, + ) { return this.transactionRepository.findAndCount({ - skip: page * 10, - take: 10, + skip: page * (pageSize || 10), + take: pageSize || 10, where: { user_destination: user, type: typeTransaction.DEPOSIT_RETURN, diff --git a/src/users/partner/partner.service.ts b/src/users/partner/partner.service.ts index b956648..1cae2f5 100644 --- a/src/users/partner/partner.service.ts +++ b/src/users/partner/partner.service.ts @@ -1,10 +1,4 @@ -import { - forwardRef, - HttpException, - HttpStatus, - Inject, - Injectable, -} from '@nestjs/common'; +import { forwardRef, HttpException, HttpStatus, Inject, Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Connection, Not, Repository } from 'typeorm'; import { CoaService } from '../../transaction/coa.service'; @@ -135,10 +129,10 @@ export class PartnerService { return partnerData; }; - findAllPartner(page) { + findAllPartner(page, pageSize?) { return this.partnerRepository.findAndCount({ - skip: page * 10, - take: 10, + skip: page * (pageSize || 10), + take: pageSize || 10, order: { version: 'DESC', }, diff --git a/src/users/supplier/supplier.service.ts b/src/users/supplier/supplier.service.ts index 13699cf..e322890 100644 --- a/src/users/supplier/supplier.service.ts +++ b/src/users/supplier/supplier.service.ts @@ -1,10 +1,4 @@ -import { - forwardRef, - HttpException, - HttpStatus, - Inject, - Injectable, -} from '@nestjs/common'; +import { forwardRef, HttpException, HttpStatus, Inject, Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Connection, EntityNotFoundError, Not, Repository } from 'typeorm'; import { Supplier } from '../entities/supplier.entity'; @@ -130,7 +124,7 @@ export class SupplierService { return supplierData; }; - async findAllSupplier(page) { + async findAllSupplier(page, pageSize?) { const baseQuery = this.supplierRepository .createQueryBuilder('supplier') .leftJoinAndMapOne( @@ -148,8 +142,8 @@ export class SupplierService { .select(['supplier', 'coa.amount', 'coa_undistribute.amount']); const data = await baseQuery - .skip(page * 10) - .take(10) + .skip(page * (pageSize || 10)) + .take(pageSize || 10) .getMany(); const totalData = await baseQuery.getCount(); diff --git a/src/users/users.controller.ts b/src/users/users.controller.ts index 42c581f..a127b27 100644 --- a/src/users/users.controller.ts +++ b/src/users/users.controller.ts @@ -125,8 +125,12 @@ export class UsersController { @Public() @Get('supplier') - async findAllSupplier(@Query('page') page: number) { - const data = await this.supplierService.findAllSupplier(page); + async findAllSupplier( + @Query('page') page: number, + @Query('pageSize') pageSize: number, + @Request() req, + ) { + const data = await this.supplierService.findAllSupplier(page, pageSize); return { ...data, @@ -136,8 +140,15 @@ export class UsersController { } @Get('partner') - async findAllPartner(@Query('page') page: number) { - const [data, count] = await this.partnerService.findAllPartner(page); + async findAllPartner( + @Query('page') page: number, + @Query('pageSize') pageSize: number, + @Request() req, + ) { + const [data, count] = await this.partnerService.findAllPartner( + page, + pageSize, + ); return { data, @@ -162,8 +173,13 @@ export class UsersController { async findByRoles( @Param('id', ParseUUIDPipe) id: string, @Query('page') page: number, + @Query('pageSize') pageSize: number, ) { - const [data, count] = await this.usersService.findByRoles(id, page); + const [data, count] = await this.usersService.findByRoles( + id, + page, + pageSize, + ); return { data, diff --git a/src/users/users.service.ts b/src/users/users.service.ts index eb97d80..b823a26 100644 --- a/src/users/users.service.ts +++ b/src/users/users.service.ts @@ -1,19 +1,7 @@ -import { - forwardRef, - HttpException, - HttpStatus, - Inject, - Injectable, -} from '@nestjs/common'; +import { forwardRef, HttpException, HttpStatus, Inject, Injectable } from '@nestjs/common'; import { CreateUserDto } from './dto/create-user.dto'; import { UpdateUserDto } from './dto/update-user.dto'; -import { - Connection, - EntityNotFoundError, - Equal, - Not, - Repository, -} from 'typeorm'; +import { Connection, EntityNotFoundError, Not, Repository } from 'typeorm'; import { User } from './entities/user.entity'; import { InjectRepository } from '@nestjs/typeorm'; import { randomStringGenerator } from '@nestjs/common/utils/random-string-generator.util'; @@ -155,10 +143,10 @@ export class UsersService { }; } - findByRoles(relationId: string, page: number) { + findByRoles(relationId: string, page: number, pageSize?: number) { return this.usersRepository.findAndCount({ - skip: page * 10, - take: 10, + skip: page * (pageSize || 10), + take: pageSize || 10, where: { roles: relationId, },