oura.a f56f95123b Merged PR 376: [Sp17完了MISO]バリデータをクラスを使用した記述に統一する
## 概要
[Task2502: [Sp17完了MISO]バリデータをクラスを使用した記述に統一する](https://paruru.nds-tyo.co.jp:8443/tfs/ReciproCollection/fa4924a4-d079-4fab-9fb5-a9a11eb205f0/_workitems/edit/2502)

バリデータの記述方法をクラスで外だしする形に統一しました。
また、未使用の引数を削除しました。

## レビューポイント
期待通りの修正内容であるか。
未使用の引数を削除してしまったが、問題ないか。

## UIの変更
なし

## 動作確認状況
ローカルで該当バリデーションを使用しているAPIを実行し、動作を確認済み

## 補足
なし
2023-09-01 09:12:52 +00:00

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,
});
};
}