From d5e5419dfc14bbb8a1329c2028134b0999883258 Mon Sep 17 00:00:00 2001 From: syuilo Date: Fri, 3 Mar 2017 02:42:17 +0900 Subject: wip --- src/api/it.ts | 83 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 83 insertions(+) (limited to 'src/api/it.ts') diff --git a/src/api/it.ts b/src/api/it.ts index 6e8aefdf2d..ec42547488 100644 --- a/src/api/it.ts +++ b/src/api/it.ts @@ -1,3 +1,8 @@ +/** + * it + * 楽しいバリデーション + */ + import * as mongo from 'mongodb'; import hasDuplicates from '../common/has-duplicates'; @@ -11,6 +16,8 @@ interface Factory { required: () => Factory; + default: (value: any) => Factory; + validate: (validator: Validator) => Factory; } @@ -33,6 +40,16 @@ class FactoryCore implements Factory { return this; } + /** + * このインスタンスの値が設定されていないときにデフォルトで設定する値を設定します + */ + default(value: any) { + if (this.value === null) { + this.value = value; + } + return this; + } + /** * このインスタンスの値およびエラーを取得します */ @@ -79,6 +96,13 @@ class BooleanFactory extends FactoryCore { return super.required(); } + /** + * このインスタンスの値が設定されていないときにデフォルトで設定する値を設定します + */ + default(value: boolean) { + return super.default(value); + } + /** * このインスタンスの値およびエラーを取得します */ @@ -124,6 +148,30 @@ class NumberFactory extends FactoryCore { return this; } + /** + * このインスタンスの値が指定された下限より下回っている場合エラーにします + * @param value 下限 + */ + min(value: number) { + if (this.error || this.value === null) return this; + if (this.value < value) { + this.error = new Error('invalid-range'); + } + return this; + } + + /** + * このインスタンスの値が指定された上限より上回っている場合エラーにします + * @param value 上限 + */ + max(value: number) { + if (this.error || this.value === null) return this; + if (this.value > value) { + this.error = new Error('invalid-range'); + } + return this; + } + /** * このインスタンスの値が undefined または null の場合エラーにします */ @@ -131,6 +179,13 @@ class NumberFactory extends FactoryCore { return super.required(); } + /** + * このインスタンスの値が設定されていないときにデフォルトで設定する値を設定します + */ + default(value: number) { + return super.default(value); + } + /** * このインスタンスの値およびエラーを取得します */ @@ -189,6 +244,13 @@ class StringFactory extends FactoryCore { return super.required(); } + /** + * このインスタンスの値が設定されていないときにデフォルトで設定する値を設定します + */ + default(value: string) { + return super.default(value); + } + /** * このインスタンスの値およびエラーを取得します */ @@ -252,6 +314,13 @@ class ArrayFactory extends FactoryCore { return super.required(); } + /** + * このインスタンスの値が設定されていないときにデフォルトで設定する値を設定します + */ + default(value: any[]) { + return super.default(value); + } + /** * このインスタンスの値およびエラーを取得します */ @@ -291,6 +360,13 @@ class IdFactory extends FactoryCore { return super.required(); } + /** + * このインスタンスの値が設定されていないときにデフォルトで設定する値を設定します + */ + default(value: mongo.ObjectID) { + return super.default(value); + } + /** * このインスタンスの値およびエラーを取得します */ @@ -330,6 +406,13 @@ class ObjectFactory extends FactoryCore { return super.required(); } + /** + * このインスタンスの値が設定されていないときにデフォルトで設定する値を設定します + */ + default(value: any) { + return super.default(value); + } + /** * このインスタンスの値およびエラーを取得します */ -- cgit v1.2.3-freya