@nodeswork/sbase
Version:
Basic REST api foundation from Nodeswork.
28 lines (27 loc) • 1.19 kB
TypeScript
import '../mongoose/model-config';
import * as Router from 'koa-router';
/**
* Generate an overrides middleware to help build mongoose queries.
*
* 1. Fetch query params to override query:
* overrides('request.query.status->query.status')
* overrides('request.body.status->query.status')
*
* 2. Set object to override query:
* overrides(['constValue', 'query.status'])
*
* 3. Extract object from ctx:
* overrides([(ctx) =>
* moment(ctx.request.query.date).startOf('month').toDate(),
* 'query.date',
* ])
*
* 4. Append to array target:
* overrides(['constValue', 'query.$or.[].status'])
*/
export declare function overrides(...rules: OverrideRule[]): Router.IMiddleware;
export declare function clearOverrides(): Router.IMiddleware;
export declare type OverrideConst = object | string | number | boolean;
export declare type OverrideRuleExtractFn = (ctx: Router.IRouterContext) => OverrideConst | Promise<OverrideConst>;
export declare type OverrideRule = string | [OverrideConst, string, string?, ...any[]] | [OverrideRuleExtractFn, string, string?, ...any[]];
export declare type OverrideRuleFormat = 'regex' | 'date' | 'string' | 'seconds';