import { WebService } from "./http_adapter"; import { validate, validateIdProperty } from "./validation_functions"; import { WebServiceValidation } from "./validation_types"; export class Validator implements WebService { constructor(private ws: WebService, private validation: WebServiceValidation) {} getOne(id: any): Promise { return this.ws.getOne(this.validateId(id)); } getMany(query: any): Promise { if (this.validation.getMany) { query = validate(query, this.validation.getMany); } return this.ws.getMany(query); } store(data: any): Promise { if (this.validation.store) { data = validate(data, this.validation.store); } return this.ws.store(data); } delete(id: any): Promise { return this.ws.delete(this.validateId(id)); } replace(id: any, data: any): Promise { if (this.validation.replace) { data = validate(data, this.validation.replace); } return this.ws.replace(this.validateId(id), data); } modify(id: any, data: any): Promise { if (this.validation.modify) { data = validate(data, this.validation.modify); } return this.ws.modify(this.validateId(id), data); } validateId(val: any) { return validateIdProperty(val, this.validation); } }