@@ -2,6 +2,7 @@ import _ from 'lodash'
22import { FindOneOptions , In , ObjectLiteral , Repository } from 'typeorm'
33import { z } from 'zod'
44import ErrorResponse from '~/lib/http/errors'
5+ import { QueryBuilder } from '~/lib/query-builder'
56import { validate } from '~/lib/validate'
67
78type IProps < T extends ObjectLiteral > = {
@@ -10,6 +11,18 @@ type IProps<T extends ObjectLiteral> = {
1011 model : string
1112}
1213
14+ type FindParams = {
15+ page : number
16+ pageSize : number
17+ filtered : any
18+ sorted : any
19+ }
20+
21+ type DtoFindAll < T extends ObjectLiteral > = {
22+ data : T [ ]
23+ total : number
24+ }
25+
1326export default class BaseService < T extends ObjectLiteral > {
1427 public repository : Repository < T >
1528 private _schema : z . ZodType < any >
@@ -24,8 +37,20 @@ export default class BaseService<T extends ObjectLiteral> {
2437 /**
2538 * Find all
2639 */
27- async find ( ) : Promise < T [ ] > {
28- return this . repository . find ( )
40+ async find ( { page, pageSize, filtered = [ ] , sorted = [ ] } : FindParams ) : Promise < DtoFindAll < T > > {
41+ const query = this . repository . createQueryBuilder ( this . _model )
42+ const newQuery = QueryBuilder ( {
43+ params : {
44+ query,
45+ model : this . _model ,
46+ reqQuery : { page, pageSize, filtered, sorted } ,
47+ } ,
48+ } )
49+
50+ const data = await newQuery . getMany ( )
51+ const total = await newQuery . getCount ( )
52+
53+ return { data, total }
2954 }
3055
3156 /**
0 commit comments