From 665bcda0a7cbf37d5691d48838da85e2f308babc Mon Sep 17 00:00:00 2001 From: syuilo Date: Fri, 3 Mar 2017 09:15:38 +0900 Subject: [PATCH] wip --- src/api/endpoints/i/update.ts | 4 +- src/api/it.ts | 78 ++++++++++++++--------------------- 2 files changed, 34 insertions(+), 48 deletions(-) diff --git a/src/api/endpoints/i/update.ts b/src/api/endpoints/i/update.ts index 1e46315ce..aeda0a452 100644 --- a/src/api/endpoints/i/update.ts +++ b/src/api/endpoints/i/update.ts @@ -23,9 +23,9 @@ module.exports = async (params, user, _, isSecure) => new Promise(async (res, rej) => { // Get 'name' parameter - const [name, nameErr] = it(params.name).expect.string().validate(isValidName).qed(); + const [name, nameErr] = it(params.name).expect.string().notNull().validate(isValidName).qed(); if (nameErr) return rej('invalid name param'); - user.name = name; + if (name) user.name = name; // Get 'description' parameter const description = params.description; diff --git a/src/api/it.ts b/src/api/it.ts index b08612c70..14f6063b2 100644 --- a/src/api/it.ts +++ b/src/api/it.ts @@ -53,8 +53,16 @@ class QueryCore implements Query { this.error = null; } + get isUndefined() { + return this.value === undefined; + } + + get isNull() { + return this.value === null; + } + get isEmpty() { - return this.value === undefined || this.value === null; + return this.isUndefined || this.isNull; } /** @@ -65,7 +73,7 @@ class QueryCore implements Query { } /** - * このインスタンスの値が空の場合エラーにします + * このインスタンスの値が空のときにエラーにします */ required() { if (this.error === null && this.isEmpty) { @@ -75,10 +83,30 @@ class QueryCore implements Query { } /** - * このインスタンスの値が設定されていないときにデフォルトで設定する値を設定します + * このインスタンスの値が設定されていない(=undefined)場合エラーにします + */ + notUndefined() { + if (this.error === null && this.isUndefined) { + this.error = new Error('required'); + } + return this; + } + + /** + * このインスタンスの値が null のときにエラーにします + */ + notNull() { + if (this.error === null && this.isNull) { + this.error = new Error('required'); + } + return this; + } + + /** + * このインスタンスの値が設定されていない(=undefined)ときにデフォルトで設定する値を設定します */ default(value: any) { - if (this.isEmpty) { + if (this.isUndefined) { this.value = value; } return this; @@ -119,13 +147,6 @@ class BooleanQuery extends QueryCore { } } - /** - * このインスタンスの値が undefined または null の場合エラーにします - */ - required() { - return super.required(); - } - /** * このインスタンスの値が設定されていないときにデフォルトで設定する値を設定します */ @@ -198,13 +219,6 @@ class NumberQuery extends QueryCore { return this; } - /** - * このインスタンスの値が undefined または null の場合エラーにします - */ - required() { - return super.required(); - } - /** * このインスタンスの値が設定されていないときにデフォルトで設定する値を設定します */ @@ -259,13 +273,6 @@ class StringQuery extends QueryCore { return this; } - /** - * このインスタンスの値が undefined または null の場合エラーにします - */ - required() { - return super.required(); - } - /** * このインスタンスの値が設定されていないときにデフォルトで設定する値を設定します */ @@ -361,13 +368,6 @@ class ArrayQuery extends QueryCore { return this; } - /** - * このインスタンスの値が undefined または null の場合エラーにします - */ - required() { - return super.required(); - } - /** * このインスタンスの値が設定されていないときにデフォルトで設定する値を設定します */ @@ -403,13 +403,6 @@ class IdQuery extends QueryCore { } } - /** - * このインスタンスの値が undefined または null の場合エラーにします - */ - required() { - return super.required(); - } - /** * このインスタンスの値が設定されていないときにデフォルトで設定する値を設定します */ @@ -445,13 +438,6 @@ class ObjectQuery extends QueryCore { } } - /** - * このインスタンスの値が undefined または null の場合エラーにします - */ - required() { - return super.required(); - } - /** * このインスタンスの値が設定されていないときにデフォルトで設定する値を設定します */