diff options
| author | syuilo <syuilotan@yahoo.co.jp> | 2017-03-03 02:42:17 +0900 |
|---|---|---|
| committer | syuilo <syuilotan@yahoo.co.jp> | 2017-03-03 02:42:17 +0900 |
| commit | d5e5419dfc14bbb8a1329c2028134b0999883258 (patch) | |
| tree | 22345847c41dee9f57d28538f4a8c9fe862be18f /src/api/it.ts | |
| parent | Fix bug (diff) | |
| download | sharkey-d5e5419dfc14bbb8a1329c2028134b0999883258.tar.gz sharkey-d5e5419dfc14bbb8a1329c2028134b0999883258.tar.bz2 sharkey-d5e5419dfc14bbb8a1329c2028134b0999883258.zip | |
wip
Diffstat (limited to 'src/api/it.ts')
| -rw-r--r-- | src/api/it.ts | 83 |
1 files changed, 83 insertions, 0 deletions
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<any>) => Factory; } @@ -34,6 +41,16 @@ class FactoryCore implements Factory { } /** + * このインスタンスの値が設定されていないときにデフォルトで設定する値を設定します + */ + default(value: any) { + if (this.value === null) { + this.value = value; + } + return this; + } + + /** * このインスタンスの値およびエラーを取得します */ qed(): [any, Error] { @@ -80,6 +97,13 @@ class BooleanFactory extends FactoryCore { } /** + * このインスタンスの値が設定されていないときにデフォルトで設定する値を設定します + */ + default(value: boolean) { + return super.default(value); + } + + /** * このインスタンスの値およびエラーを取得します */ qed(): [boolean, Error] { @@ -125,6 +149,30 @@ class NumberFactory extends FactoryCore { } /** + * このインスタンスの値が指定された下限より下回っている場合エラーにします + * @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 の場合エラーにします */ required() { @@ -132,6 +180,13 @@ class NumberFactory extends FactoryCore { } /** + * このインスタンスの値が設定されていないときにデフォルトで設定する値を設定します + */ + default(value: number) { + return super.default(value); + } + + /** * このインスタンスの値およびエラーを取得します */ qed(): [number, Error] { @@ -190,6 +245,13 @@ class StringFactory extends FactoryCore { } /** + * このインスタンスの値が設定されていないときにデフォルトで設定する値を設定します + */ + default(value: string) { + return super.default(value); + } + + /** * このインスタンスの値およびエラーを取得します */ qed(): [string, Error] { @@ -253,6 +315,13 @@ class ArrayFactory extends FactoryCore { } /** + * このインスタンスの値が設定されていないときにデフォルトで設定する値を設定します + */ + default(value: any[]) { + return super.default(value); + } + + /** * このインスタンスの値およびエラーを取得します */ qed(): [any[], Error] { @@ -292,6 +361,13 @@ class IdFactory extends FactoryCore { } /** + * このインスタンスの値が設定されていないときにデフォルトで設定する値を設定します + */ + default(value: mongo.ObjectID) { + return super.default(value); + } + + /** * このインスタンスの値およびエラーを取得します */ qed(): [any[], Error] { @@ -331,6 +407,13 @@ class ObjectFactory extends FactoryCore { } /** + * このインスタンスの値が設定されていないときにデフォルトで設定する値を設定します + */ + default(value: any) { + return super.default(value); + } + + /** * このインスタンスの値およびエラーを取得します */ qed(): [any, Error] { |