diff --git a/package-lock.json b/package-lock.json index 167cc135..8cf4a443 100644 --- a/package-lock.json +++ b/package-lock.json @@ -33,9 +33,9 @@ } }, "@js-entity-repos/axios": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@js-entity-repos/axios/-/axios-2.0.1.tgz", - "integrity": "sha512-cTDPYgubTTEtB0T/UAtj6q+g6M6oIkCgbKTnTnZODMPhYfz5YPGbp3ZE8CJu1LrfsV/vsTM+AGGAxdxGNb4plQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@js-entity-repos/axios/-/axios-3.0.0.tgz", + "integrity": "sha512-mO55Igw9DZx9M8aqMCRCx0vISSAEYNs2odXwZIAeGqfNzM4zmPelQD76l7ORSMbNkR3VCiZOmSRmmd1r4LPFjw==", "dev": true, "requires": { "@js-entity-repos/core": "6.0.2", diff --git a/package.json b/package.json index eb3073cf..6cb78e5a 100644 --- a/package.json +++ b/package.json @@ -31,7 +31,7 @@ "devDependencies": { "@ht2-labs/semantic-release": "1.0.31", "@ht2-labs/typescript-project": "1.0.9", - "@js-entity-repos/axios": "2.0.1", + "@js-entity-repos/axios": "3.0.0", "@js-entity-repos/memory": "3.0.1", "@types/dotenv": "4.0.2", "@types/express": "4.11.1", diff --git a/src/functions/getEntities.ts b/src/functions/getEntities.ts index 93661aa6..7e70628d 100644 --- a/src/functions/getEntities.ts +++ b/src/functions/getEntities.ts @@ -16,6 +16,13 @@ export default (config: FacadeConfig) => { }, sort: getJsonQueryParam(req.query, 'sort'), }); - res.status(OK).json(result); + res.status(OK); + if (result.nextCursor !== undefined) { + res.setHeader('x-entities-next-cursor', result.nextCursor); + } + if (result.previousCursor !== undefined) { + res.setHeader('x-entities-previous-cursor', result.previousCursor); + } + res.json(result.entities); }); }; diff --git a/src/utils/axiosRepo/index.ts b/src/utils/axiosRepo/index.ts deleted file mode 100644 index 4562fa68..00000000 --- a/src/utils/axiosRepo/index.ts +++ /dev/null @@ -1,13 +0,0 @@ -import factory from '@js-entity-repos/axios/dist/factory'; -import Facade from '@js-entity-repos/core/dist/Facade'; -import { TestEntity } from '@js-entity-repos/core/dist/tests/utils/testEntity'; -import axios from 'axios'; - -export default (): Facade => { - return factory({ - axios: axios.create({ - baseURL: `http://localhost:80/api/todos`, - }), - entityName: 'Test Entity', - }); -}; diff --git a/src/utils/createTestServer.ts b/src/utils/createTestServer.ts index 6578c742..c64b82bf 100644 --- a/src/utils/createTestServer.ts +++ b/src/utils/createTestServer.ts @@ -1,7 +1,7 @@ +import memoryFactory from '@js-entity-repos/memory/dist/factory'; import * as express from 'express'; import { createServer, Server } from 'http'; import expressFactory from '../factory'; -import memoryRepo from './memoryRepo'; export interface Config { readonly port: number; @@ -11,8 +11,14 @@ export interface Config { export default ({ port, route }: Config): Promise => { return new Promise((resolve) => { const app = express(); + const state = { entities: [] }; app.use(route, expressFactory({ - service: memoryRepo(), + service: memoryFactory({ + defaultPaginationLimit: 100, + entityName: 'Test Entity', + getEntities: () => state.entities, + setEntities: (entities) => state.entities = entities, + }), })); const server = createServer(app); server.listen(port, () => { diff --git a/src/utils/memoryRepo/index.ts b/src/utils/memoryRepo/index.ts deleted file mode 100644 index 2435c141..00000000 --- a/src/utils/memoryRepo/index.ts +++ /dev/null @@ -1,18 +0,0 @@ -import Facade from '@js-entity-repos/core/dist/Facade'; -import { TestEntity } from '@js-entity-repos/core/dist/tests/utils/testEntity'; -import factory from '@js-entity-repos/memory/dist/factory'; - -interface State { - // tslint:disable-next-line:readonly-keyword - entities: TestEntity[]; -} - -export default (): Facade => { - const state: State = { entities: [] }; - return factory({ - defaultPaginationLimit: 100, - entityName: 'Test Entity', - getEntities: () => state.entities, - setEntities: (entities) => state.entities = entities, - }); -};