## 概要 [Task2502: [Sp17完了MISO]バリデータをクラスを使用した記述に統一する](https://paruru.nds-tyo.co.jp:8443/tfs/ReciproCollection/fa4924a4-d079-4fab-9fb5-a9a11eb205f0/_workitems/edit/2502) バリデータの記述方法をクラスで外だしする形に統一しました。 また、未使用の引数を削除しました。 ## レビューポイント 期待通りの修正内容であるか。 未使用の引数を削除してしまったが、問題ないか。 ## UIの変更 なし ## 動作確認状況 ローカルで該当バリデーションを使用しているAPIを実行し、動作を確認済み ## 補足 なし
42 lines
1.2 KiB
TypeScript
42 lines
1.2 KiB
TypeScript
import {
|
|
registerDecorator,
|
|
ValidationArguments,
|
|
ValidationOptions,
|
|
ValidatorConstraint,
|
|
ValidatorConstraintInterface,
|
|
} from 'class-validator';
|
|
import { TASK_STATUS } from '../../constants';
|
|
|
|
@ValidatorConstraint()
|
|
export class IsStatusConstraint implements ValidatorConstraintInterface {
|
|
private readonly STATUS: string[] = Object.values(TASK_STATUS);
|
|
validate(value: string): boolean {
|
|
if (value) {
|
|
// ,で分割した文字列のすべてがTASK_STATUSのプロパティに存在する値であった場合のみtrue
|
|
return value.split(',').every((state) => this.STATUS.includes(state));
|
|
} else {
|
|
return false;
|
|
}
|
|
}
|
|
|
|
defaultMessage(): string {
|
|
return `invalid status string`;
|
|
}
|
|
}
|
|
/**
|
|
* ,で分割した文字列のすべてがTASK_STATUSのプロパティに存在する値であるかをチェックする
|
|
* @param [validationOptions]
|
|
* @returns
|
|
*/
|
|
export function IsStatus(validationOptions?: ValidationOptions) {
|
|
return (object: object, propertyName: string) => {
|
|
registerDecorator({
|
|
name: 'IsStatus',
|
|
target: object.constructor,
|
|
propertyName,
|
|
options: validationOptions,
|
|
validator: IsStatusConstraint,
|
|
});
|
|
};
|
|
}
|