@@ -7,7 +7,7 @@ export function query<T extends GenericObject, P extends QueryParams<T>>(
77) : QueryResult < T , P > {
88 let result = lazyQuery ( data , params )
99 result = lazySortedQuery ( result , params . sort )
10- return paginateQuery ( Array . from ( result ) , params )
10+ return paginateQuery ( result , params )
1111}
1212
1313function * lazyQuery < T extends GenericObject > ( data : T [ ] , params : QueryParams < T > ) : Generator < T > {
@@ -111,24 +111,26 @@ function* lazySortedQuery<T extends GenericObject>(
111111 }
112112}
113113
114- function paginateQuery < T extends GenericObject , P extends QueryParams < T > > ( data : T [ ] , params : P ) : QueryResult < T , P > {
114+ function paginateQuery < T extends GenericObject , P extends QueryParams < T > > ( data : Iterable < T > , params : P ) : QueryResult < T , P > {
115115 if ( typeof params . limit === 'undefined' ) {
116- return { rows : data } as QueryResult < T , P >
116+ return { rows : Array . from ( data ) } as QueryResult < T , P >
117117 }
118118
119119 else {
120- const unpaginatedRows = [ ... data ]
121- const totalRows = data . length
120+ let rows = Array . from ( data )
121+ const totalRows = rows . length
122122 const totalPages = Math . ceil ( totalRows / params . limit )
123123 const start = ( ( params ?. page ?? 1 ) - 1 ) * params . limit
124124 const end = start + params . limit
125- data = data . slice ( start , end )
125+ rows = rows . slice ( start , end )
126126
127127 return {
128128 totalRows,
129129 totalPages,
130- rows : data ,
131- unpaginatedRows,
130+ rows,
131+ get unpaginatedRows ( ) {
132+ return Array . from ( data )
133+ } ,
132134 } as QueryResult < T , P >
133135 }
134136}
0 commit comments