feat: add page size in all the rest API

This commit is contained in:
caturbgs 2021-12-22 15:23:05 +07:00
parent cdd6d39c90
commit c3df45dc9a
14 changed files with 135 additions and 124 deletions

View File

@ -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<CommissionSetting>,
) {}
findAllCommission(page) {
findAllCommission(page, pageSize?) {
return this.commissionRepository.findAndCount({
skip: page * 10,
take: 10,
skip: page * (pageSize || 10),
take: pageSize || 10,
order: {
version: 'DESC',
},

View File

@ -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 {

View File

@ -10,20 +10,20 @@ export class RoleService {
private rolesRepository: Repository<Roles>,
) {}
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([

View File

@ -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();

View File

@ -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',
},

View File

@ -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();

View File

@ -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 {

View File

@ -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();

View File

@ -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 {

View File

@ -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,

View File

@ -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',
},

View File

@ -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();

View File

@ -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,

View File

@ -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,
},