From d53d45f797946ced21f6eaeee0fa4c713b19f782 Mon Sep 17 00:00:00 2001 From: syuilo Date: Thu, 5 Jul 2018 22:35:35 +0900 Subject: wip --- src/server/api/get-params.ts | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 src/server/api/get-params.ts (limited to 'src/server/api/get-params.ts') diff --git a/src/server/api/get-params.ts b/src/server/api/get-params.ts new file mode 100644 index 0000000000..6b047a28f4 --- /dev/null +++ b/src/server/api/get-params.ts @@ -0,0 +1,30 @@ +import { Query } from 'cafy'; + +type Defs = { + params: {[key: string]: { + def: Query; + default?: any; + }} +}; + +export default function (defs: T, params: any): [{ + [P in keyof T['params']]: ReturnType[0]; +}, Error] { + const x: any = {}; + let err: Error = null; + Object.keys(defs.params).some(k => { + const [v, e] = defs.params[k].def.get(params[k]); + if (e) { + err = e; + return true; + } else { + if (v === undefined && defs.params[k].default) { + x[k] = defs.params[k].default; + } else { + x[k] = v; + } + return false; + } + }); + return [x, err]; +} -- cgit v1.2.3-freya