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

Commit 3fd7f78

Browse files
authored
feat: Moves cursors into headers. (#2)
BREAKING CHANGE: Uses `x-entities-next-cursor` and `x-entities-previous-cursor` headers for `getEntities` instead of the response body.
1 parent 487592c commit 3fd7f78

File tree

6 files changed

+20
-38
lines changed

6 files changed

+20
-38
lines changed

package-lock.json

+3-3
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131
"devDependencies": {
3232
"@ht2-labs/semantic-release": "1.0.31",
3333
"@ht2-labs/typescript-project": "1.0.9",
34-
"@js-entity-repos/axios": "2.0.1",
34+
"@js-entity-repos/axios": "3.0.0",
3535
"@js-entity-repos/memory": "3.0.1",
3636
"@types/dotenv": "4.0.2",
3737
"@types/express": "4.11.1",

src/functions/getEntities.ts

+8-1
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,13 @@ export default <E extends Entity>(config: FacadeConfig<E>) => {
1616
},
1717
sort: getJsonQueryParam(req.query, 'sort'),
1818
});
19-
res.status(OK).json(result);
19+
res.status(OK);
20+
if (result.nextCursor !== undefined) {
21+
res.setHeader('x-entities-next-cursor', result.nextCursor);
22+
}
23+
if (result.previousCursor !== undefined) {
24+
res.setHeader('x-entities-previous-cursor', result.previousCursor);
25+
}
26+
res.json(result.entities);
2027
});
2128
};

src/utils/axiosRepo/index.ts

-13
This file was deleted.

src/utils/createTestServer.ts

+8-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1+
import memoryFactory from '@js-entity-repos/memory/dist/factory';
12
import * as express from 'express';
23
import { createServer, Server } from 'http';
34
import expressFactory from '../factory';
4-
import memoryRepo from './memoryRepo';
55

66
export interface Config {
77
readonly port: number;
@@ -11,8 +11,14 @@ export interface Config {
1111
export default ({ port, route }: Config): Promise<Server> => {
1212
return new Promise<Server>((resolve) => {
1313
const app = express();
14+
const state = { entities: [] };
1415
app.use(route, expressFactory({
15-
service: memoryRepo(),
16+
service: memoryFactory({
17+
defaultPaginationLimit: 100,
18+
entityName: 'Test Entity',
19+
getEntities: () => state.entities,
20+
setEntities: (entities) => state.entities = entities,
21+
}),
1622
}));
1723
const server = createServer(app);
1824
server.listen(port, () => {

src/utils/memoryRepo/index.ts

-18
This file was deleted.

0 commit comments

Comments
 (0)