Skip to content
This repository was archived by the owner on Jun 15, 2021. It is now read-only.

Commit cc504b6

Browse files
authored
fix: Fixes cursors and updates core to ^8.0.0. (#15)
1 parent 1db0d3f commit cc504b6

File tree

3 files changed

+20
-16
lines changed

3 files changed

+20
-16
lines changed

package-lock.json

Lines changed: 7 additions & 7 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
"check-coverage": true
2626
},
2727
"dependencies": {
28-
"@js-entity-repos/core": "^7.1.0",
28+
"@js-entity-repos/core": "^8.0.0",
2929
"lodash": "^4.17.4",
3030
"sift": "^5.0.0"
3131
},

src/functions/getEntities.ts

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
11
import GetEntities from '@js-entity-repos/core/dist/signatures/GetEntities';
2+
import { end } from '@js-entity-repos/core/dist/types/Cursor';
23
import Entity from '@js-entity-repos/core/dist/types/Entity';
34
import Pagination from '@js-entity-repos/core/dist/types/Pagination';
45
import { forward } from '@js-entity-repos/core/dist/types/PaginationDirection';
56
import Sort from '@js-entity-repos/core/dist/types/Sort';
67
import { asc } from '@js-entity-repos/core/dist/types/SortOrder';
7-
import createCursorFromEntity from '@js-entity-repos/core/dist/utils/createCursorFromEntity';
8+
import createEndCursorResult from '@js-entity-repos/core/dist/utils/createEndCursorResult';
9+
import createGetEntitiesResult from '@js-entity-repos/core/dist/utils/createGetEntitiesResult';
810
import createPaginationFilter from '@js-entity-repos/core/dist/utils/createPaginationFilter';
9-
import { first, last } from 'lodash';
1011
import FacadeConfig from '../FacadeConfig';
1112
import filterEntities from '../utils/filterEntities';
1213
import sortEntities from '../utils/sortEntities';
@@ -19,16 +20,19 @@ export default <E extends Entity>(config: FacadeConfig<E>): GetEntities<E> => {
1920
};
2021
const defaultSort = { id: asc } as Sort<E>;
2122
return async ({ filter = {}, sort = defaultSort, pagination = defaultPagination }) => {
23+
if (pagination.cursor === end) {
24+
return createEndCursorResult(pagination);
25+
}
26+
2227
const paginationFilter = createPaginationFilter(pagination, sort);
2328
const fullFilter = { $and: [filter, paginationFilter] };
2429
const storedEntities = config.getEntities();
2530
const matchedEntities = filterEntities({ entities: storedEntities, filter: fullFilter });
2631
const sortedEntities = sortEntities({ entities: matchedEntities, sort });
27-
const start = pagination.direction === forward ? 0 : 0 - pagination.limit;
28-
const end = pagination.direction === forward ? pagination.limit : undefined;
29-
const entities = sortedEntities.slice(start, end);
30-
const nextCursor = createCursorFromEntity(last(entities), sort);
31-
const previousCursor = createCursorFromEntity(first(entities), sort);
32-
return { entities, nextCursor, previousCursor };
32+
const sliceStart = pagination.direction === forward ? 0 : 0 - pagination.limit;
33+
const sliceEnd = pagination.direction === forward ? pagination.limit : undefined;
34+
const entities = sortedEntities.slice(sliceStart, sliceEnd);
35+
const isEnd = sortedEntities.length <= pagination.limit;
36+
return createGetEntitiesResult({ entities, isEnd, pagination, sort });
3337
};
3438
};

0 commit comments

Comments
 (0)