@@ -4,9 +4,9 @@ import Pagination from '@js-entity-repos/core/dist/types/Pagination';
44import { forward } from '@js-entity-repos/core/dist/types/PaginationDirection' ;
55import Sort from '@js-entity-repos/core/dist/types/Sort' ;
66import SortOrder , { asc } from '@js-entity-repos/core/dist/types/SortOrder' ;
7- import createCursorFromEntity from '@js-entity-repos/core/dist/utils/createCursorFromEntity ' ;
7+ import createGetEntitiesResult from '@js-entity-repos/core/dist/utils/createGetEntitiesResult ' ;
88import createPaginationFilter from '@js-entity-repos/core/dist/utils/createPaginationFilter' ;
9- import { first , last , mapValues } from 'lodash' ;
9+ import { mapValues } from 'lodash' ;
1010import FacadeConfig from '../FacadeConfig' ;
1111
1212const xor = ( conditionA : boolean , conditionB : boolean ) => {
@@ -32,16 +32,16 @@ export default <E extends Entity>(config: FacadeConfig<E>): GetEntities<E> => {
3232 return ! xor ( pagination . direction === forward , sortOrder === asc ) ? 1 : - 1 ;
3333 } ) ;
3434
35- const documents = await collection
35+ const results = await collection
3636 . find ( constructedFilter )
3737 . sort ( mongoSort )
38- . limit ( pagination . limit )
38+ . limit ( pagination . limit + 1 )
3939 . toArray ( ) ;
40+ const documents = results . slice ( 0 , pagination . limit ) ;
4041
41- const entities = documents . map ( config . constructEntity ) ;
42- const nextCursor = createCursorFromEntity ( last ( entities ) , sort ) ;
43- const previousCursor = createCursorFromEntity ( first ( entities ) , sort ) ;
42+ const entities : E [ ] = documents . map ( config . constructEntity ) ;
43+ const isEnd = results . length <= pagination . limit ;
4444
45- return { entities, nextCursor , previousCursor } ;
45+ return createGetEntitiesResult ( { entities, isEnd , pagination , sort } ) ;
4646 } ;
4747} ;
0 commit comments