1
1
import GetEntities from '@js-entity-repos/core/dist/signatures/GetEntities' ;
2
2
import Entity from '@js-entity-repos/core/dist/types/Entity' ;
3
+ import Pagination from '@js-entity-repos/core/dist/types/Pagination' ;
4
+ import { forward } from '@js-entity-repos/core/dist/types/PaginationDirection' ;
3
5
import Sort from '@js-entity-repos/core/dist/types/Sort' ;
6
+ import { asc } from '@js-entity-repos/core/dist/types/SortOrder' ;
4
7
import createCursorFromEntity from '@js-entity-repos/core/dist/utils/createCursorFromEntity' ;
5
8
import createPaginationFilter from '@js-entity-repos/core/dist/utils/createPaginationFilter' ;
6
9
import { first , last } from 'lodash' ;
@@ -9,20 +12,20 @@ import filterEntities from '../utils/filterEntities';
9
12
import sortEntities from '../utils/sortEntities' ;
10
13
11
14
export default < E extends Entity > ( config : Config < E > ) : GetEntities < E > => {
12
- const defaultPagination = {
15
+ const defaultPagination : Pagination = {
13
16
cursor : undefined ,
14
- forward : true ,
17
+ direction : forward ,
15
18
limit : config . defaultPaginationLimit ,
16
19
} ;
17
- const defaultSort = { id : true } as Sort < E > ;
20
+ const defaultSort = { id : asc } as Sort < E > ;
18
21
return async ( { filter = { } , sort = defaultSort , pagination = defaultPagination } ) => {
19
22
const paginationFilter = createPaginationFilter ( pagination , sort ) ;
20
23
const fullFilter = { $and : [ filter , paginationFilter ] } ;
21
24
const storedEntities = config . getEntities ( ) ;
22
25
const matchedEntities = filterEntities ( { entities : storedEntities , filter : fullFilter } ) ;
23
26
const sortedEntities = sortEntities ( { entities : matchedEntities , sort } ) ;
24
- const start = pagination . forward ? 0 : 0 - pagination . limit ;
25
- const end = pagination . forward ? pagination . limit : undefined ;
27
+ const start = pagination . direction === forward ? 0 : 0 - pagination . limit ;
28
+ const end = pagination . direction === forward ? pagination . limit : undefined ;
26
29
const entities = sortedEntities . slice ( start , end ) ;
27
30
const nextCursor = createCursorFromEntity ( last ( entities ) , sort ) ;
28
31
const previousCursor = createCursorFromEntity ( first ( entities ) , sort ) ;
0 commit comments