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

Commit 5a22638

Browse files
authored
feat: Adds constructFilter to config. (#3)
1 parent a2e69dc commit 5a22638

File tree

11 files changed

+16
-9
lines changed

11 files changed

+16
-9
lines changed

readme.md

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,11 @@ export interface TodoEntity extends Entity {
2727
import factory from '@js-entity-repos/express/dist/factory';
2828

2929
const todosFacade = factory<TodoEntity>({
30-
// Optional property that determines the default pagination limit.
30+
// Optional property that modifies a filter for the service.
31+
constructFilter: (filter) => {
32+
return filter;
33+
},
34+
// Optional property.
3135
defaultPaginationLimit: 10,
3236
// Optional property that catches errors from handlers.
3337
errorCatcher: (handler) => (req, res) => {

src/FacadeConfig.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
import Facade from '@js-entity-repos/core/dist/Facade';
22
import Entity from '@js-entity-repos/core/dist/types/Entity';
3+
import Filter from '@js-entity-repos/core/dist/types/Filter';
34
import ErrorCatcher from './utils/ErrorCatcher';
45

56
export default interface FacadeConfig<E extends Entity> {
7+
readonly constructFilter: (filter: Filter<E>) => any;
68
readonly service: Facade<E>;
79
readonly errorCatcher: ErrorCatcher;
810
readonly defaultPaginationLimit: number;

src/factory.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import catchErrors from './utils/catchErrors';
1515

1616
export default <E extends Entity>(factoryConfig: FactoryConfig<E>): Router => {
1717
const facadeConfig: FacadeConfig<E> = {
18+
constructFilter: (filter) => filter,
1819
defaultPaginationLimit: 10,
1920
errorCatcher: catchErrors,
2021
...factoryConfig,

src/functions/countEntities.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import getJsonQueryParam from '../utils/getJsonQueryParam';
88
export default <E extends Entity>(config: FacadeConfig<E>) => {
99
return catchErrors(async (req: Request, res: Response) => {
1010
const { count } = await config.service.countEntities({
11-
filter: getJsonQueryParam(req.query, 'filter'),
11+
filter: config.constructFilter(getJsonQueryParam(req.query, 'filter')),
1212
});
1313
res.status(OK).json(count);
1414
});

src/functions/getEntities.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ export default <E extends Entity>(config: FacadeConfig<E>) => {
1010
return catchErrors(async (req: Request, res: Response) => {
1111
const limit = getNumberQueryParam(req.query, 'limit', config.defaultPaginationLimit);
1212
const result = await config.service.getEntities({
13-
filter: getJsonQueryParam(req.query, 'filter'),
13+
filter: config.constructFilter(getJsonQueryParam(req.query, 'filter')),
1414
pagination: {
1515
cursor: req.query.cursor,
1616
forward: req.query.forward === 'true',

src/functions/getEntity.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import getJsonQueryParam from '../utils/getJsonQueryParam';
88
export default <E extends Entity>(config: FacadeConfig<E>) => {
99
return catchErrors(async (req: Request, res: Response) => {
1010
const { entity } = await config.service.getEntity({
11-
filter: getJsonQueryParam(req.query, 'filter'),
11+
filter: config.constructFilter(getJsonQueryParam(req.query, 'filter')),
1212
id: req.params.id,
1313
});
1414
res.status(OK).json(entity);

src/functions/patchEntities.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import getJsonQueryParam from '../utils/getJsonQueryParam';
88
export default <E extends Entity>(config: FacadeConfig<E>) => {
99
return catchErrors(async (req: Request, res: Response) => {
1010
const { entity } = await config.service.patchEntity({
11-
filter: getJsonQueryParam(req.query, 'filter'),
11+
filter: config.constructFilter(getJsonQueryParam(req.query, 'filter')),
1212
id: req.params.id,
1313
patch: req.body,
1414
});

src/functions/removeEntities.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import getJsonQueryParam from '../utils/getJsonQueryParam';
88
export default <E extends Entity>(config: FacadeConfig<E>) => {
99
return catchErrors(async (req: Request, res: Response) => {
1010
await config.service.removeEntities({
11-
filter: getJsonQueryParam(req.query, 'filter'),
11+
filter: config.constructFilter(getJsonQueryParam(req.query, 'filter')),
1212
});
1313
res.status(NO_CONTENT).send();
1414
});

src/functions/removeEntity.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import getJsonQueryParam from '../utils/getJsonQueryParam';
88
export default <E extends Entity>(config: FacadeConfig<E>) => {
99
return catchErrors(async (req: Request, res: Response) => {
1010
await config.service.removeEntity({
11-
filter: getJsonQueryParam(req.query, 'filter'),
11+
filter: config.constructFilter(getJsonQueryParam(req.query, 'filter')),
1212
id: req.params.id,
1313
});
1414
res.status(NO_CONTENT).send();

src/functions/replaceEntity.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ export default <E extends Entity>(config: FacadeConfig<E>) => {
99
return catchErrors(async (req: Request, res: Response) => {
1010
const { entity } = await config.service.replaceEntity({
1111
entity: req.body,
12-
filter: getJsonQueryParam(req.query, 'filter'),
12+
filter: config.constructFilter(getJsonQueryParam(req.query, 'filter')),
1313
id: req.params.id,
1414
});
1515
res.status(OK).json(entity);

0 commit comments

Comments
 (0)