Files

36 lines
801 B
TypeScript
Raw Permalink Normal View History

import { Result } from "../domain/Result.js"
2026-02-10 15:57:03 +01:00
export type Validator<T extends Object> = {
field: keyof T,
errorMsg: string,
validationFunc: (obj: T) => boolean
}
/**
* Ejecuta una lista de validadores en orden, si alguno
* falla devuelve un Error
*/
export class BodyValidator<T extends Object> {
validatorList: Validator<T>[] = []
constructor(
validators: Validator<T>[]
) {
this.validatorList = validators
}
public validate(obj: T): Result<{ msg: string, field: string }, boolean> {
2026-02-10 15:57:03 +01:00
for (const validator of this.validatorList) {
if (validator.validationFunc(obj) == false)
return {
error: {
msg: validator.errorMsg,
field: String(validator.field)
}
}
2026-02-10 15:57:03 +01:00
}
return {
data: true
};
2026-02-10 15:57:03 +01:00
}
}