Closed kopecmi8 closed 3 years ago
Použití pak může vypadat jako
import { PropertyName } from "@frui.ts/helpers";
import { AutomaticEntityValidator } from "@frui.ts/validation";
export function hasAutomaticValidation<TTarget>(target: any): target is IHasAutomaticValidation<TTarget> {
return (
(target as IHasAutomaticValidation<TTarget>)?.__validation !== undefined &&
target.__validation.entityValidationRules !== undefined
);
}
export interface IHasAutomaticValidation<TTarget> {
__validation: AutomaticEntityValidator<TTarget>;
}
export default function hasRequiredProperty<TTarget>(entity: IHasAutomaticValidation<TTarget>, property: PropertyName<TTarget>) {
if (entity?.__validation?.entityValidationRules?.[property]?.requiredIf) {
return entity?.__validation?.entityValidationRules?.[property]?.requiredIf.condition(entity);
}
return !!entity?.__validation?.entityValidationRules?.[property]?.required;
}
Otázka je jestlii ten IHasAutomaticValidation
a hasAutomaticValidation
nepřidat taky přímo do Frui.ts. A nebo druhá možnost rozšířit o entityValidationRules
přímo interface IEntityValidator, ale pro manuální validátory mi nedává moc smysl mít tam tudle property....
Souhlas, přidejme IHasAutomaticValidation a hasAutomaticValidation do frui.ts
24