From 931bdc6aace5e7aa71ffdfb470e208ead78a2a53 Mon Sep 17 00:00:00 2001 From: syuilo Date: Fri, 2 Nov 2018 03:32:24 +0900 Subject: Refactoring, Clean up and bug fixes --- src/misc/cafy-id.ts | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) (limited to 'src/misc') diff --git a/src/misc/cafy-id.ts b/src/misc/cafy-id.ts index 3880f0bd0c..621f7e7948 100644 --- a/src/misc/cafy-id.ts +++ b/src/misc/cafy-id.ts @@ -4,23 +4,31 @@ import isObjectId from './is-objectid'; export const isAnId = (x: any) => mongo.ObjectID.isValid(x); export const isNotAnId = (x: any) => !isAnId(x); +export const transform = (x: string | mongo.ObjectID): mongo.ObjectID => { + if (x == null) return null; + + if (isAnId(x) && !isObjectId(x)) { + return new mongo.ObjectID(x); + } else { + return x as mongo.ObjectID; + } +}; +export const transformMany = (xs: (string | mongo.ObjectID)[]): mongo.ObjectID[] => { + if (xs == null) return null; + + return xs.map(x => transform(x)); +}; + +export type ObjectId = mongo.ObjectID; /** * ID */ -export default class ID extends Context { +export default class ID extends Context { constructor() { super(); - this.transform = v => { - if (isAnId(v) && !isObjectId(v)) { - return new mongo.ObjectID(v); - } else { - return v; - } - }; - - this.push(v => { + this.push((v: any) => { if (!isObjectId(v) && isNotAnId(v)) { return new Error('must-be-an-id'); } -- cgit v1.2.3-freya