@decaf-ts/db-decorators
Version:
Agnostic database decorators and repository
38 lines • 4.78 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.UpdateValidator = void 0;
const decorator_validation_1 = require("@decaf-ts/decorator-validation");
/**
* @description Abstract base class for validators that compare new values with old values during updates.
* @summary Base class for an Update validator that provides a framework for implementing validation logic that compares a new value with its previous state.
* @param {string} [message] - Error message. Defaults to {@link DecoratorMessages#DEFAULT}
* @param {string[]} [acceptedTypes] - The accepted value types by the decorator
* @class UpdateValidator
* @example
* // Extending UpdateValidator to create a custom validator
* class MyCustomValidator extends UpdateValidator {
* constructor() {
* super("Custom validation failed");
* }
*
* public updateHasErrors(value: any, oldValue: any): string | undefined {
* // Custom validation logic
* if (value === oldValue) {
* return this.message;
* }
* return undefined;
* }
*
* hasErrors(value: any): string | undefined {
* return undefined; // Not used for update validators
* }
* }
* @category Validators
*/
class UpdateValidator extends decorator_validation_1.Validator {
constructor(message = decorator_validation_1.DEFAULT_ERROR_MESSAGES.DEFAULT, ...acceptedTypes) {
super(message, ...acceptedTypes);
}
}
exports.UpdateValidator = UpdateValidator;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVXBkYXRlVmFsaWRhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3ZhbGlkYXRpb24vdmFsaWRhdG9ycy9VcGRhdGVWYWxpZGF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEseUVBR3dDO0FBRXhDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTBCRztBQUNILE1BQXNCLGVBQWdCLFNBQVEsZ0NBQVM7SUFDckQsWUFDRSxVQUFrQiw2Q0FBaUIsQ0FBQyxPQUFPLEVBQzNDLEdBQUcsYUFBdUI7UUFFMUIsS0FBSyxDQUFDLE9BQU8sRUFBRSxHQUFHLGFBQWEsQ0FBQyxDQUFDO0lBQ25DLENBQUM7Q0FlRjtBQXJCRCwwQ0FxQkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBERUZBVUxUX0VSUk9SX01FU1NBR0VTIGFzIERlY29yYXRvck1lc3NhZ2VzLFxuICBWYWxpZGF0b3IsXG59IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdG9yLXZhbGlkYXRpb25cIjtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gQWJzdHJhY3QgYmFzZSBjbGFzcyBmb3IgdmFsaWRhdG9ycyB0aGF0IGNvbXBhcmUgbmV3IHZhbHVlcyB3aXRoIG9sZCB2YWx1ZXMgZHVyaW5nIHVwZGF0ZXMuXG4gKiBAc3VtbWFyeSBCYXNlIGNsYXNzIGZvciBhbiBVcGRhdGUgdmFsaWRhdG9yIHRoYXQgcHJvdmlkZXMgYSBmcmFtZXdvcmsgZm9yIGltcGxlbWVudGluZyB2YWxpZGF0aW9uIGxvZ2ljIHRoYXQgY29tcGFyZXMgYSBuZXcgdmFsdWUgd2l0aCBpdHMgcHJldmlvdXMgc3RhdGUuXG4gKiBAcGFyYW0ge3N0cmluZ30gW21lc3NhZ2VdIC0gRXJyb3IgbWVzc2FnZS4gRGVmYXVsdHMgdG8ge0BsaW5rIERlY29yYXRvck1lc3NhZ2VzI0RFRkFVTFR9XG4gKiBAcGFyYW0ge3N0cmluZ1tdfSBbYWNjZXB0ZWRUeXBlc10gLSBUaGUgYWNjZXB0ZWQgdmFsdWUgdHlwZXMgYnkgdGhlIGRlY29yYXRvclxuICogQGNsYXNzIFVwZGF0ZVZhbGlkYXRvclxuICogQGV4YW1wbGVcbiAqIC8vIEV4dGVuZGluZyBVcGRhdGVWYWxpZGF0b3IgdG8gY3JlYXRlIGEgY3VzdG9tIHZhbGlkYXRvclxuICogY2xhc3MgTXlDdXN0b21WYWxpZGF0b3IgZXh0ZW5kcyBVcGRhdGVWYWxpZGF0b3Ige1xuICogICBjb25zdHJ1Y3RvcigpIHtcbiAqICAgICBzdXBlcihcIkN1c3RvbSB2YWxpZGF0aW9uIGZhaWxlZFwiKTtcbiAqICAgfVxuICogICBcbiAqICAgcHVibGljIHVwZGF0ZUhhc0Vycm9ycyh2YWx1ZTogYW55LCBvbGRWYWx1ZTogYW55KTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAqICAgICAvLyBDdXN0b20gdmFsaWRhdGlvbiBsb2dpY1xuICogICAgIGlmICh2YWx1ZSA9PT0gb2xkVmFsdWUpIHtcbiAqICAgICAgIHJldHVybiB0aGlzLm1lc3NhZ2U7XG4gKiAgICAgfVxuICogICAgIHJldHVybiB1bmRlZmluZWQ7XG4gKiAgIH1cbiAqICAgXG4gKiAgIGhhc0Vycm9ycyh2YWx1ZTogYW55KTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAqICAgICByZXR1cm4gdW5kZWZpbmVkOyAvLyBOb3QgdXNlZCBmb3IgdXBkYXRlIHZhbGlkYXRvcnNcbiAqICAgfVxuICogfVxuICogQGNhdGVnb3J5IFZhbGlkYXRvcnNcbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFVwZGF0ZVZhbGlkYXRvciBleHRlbmRzIFZhbGlkYXRvciB7XG4gIHByb3RlY3RlZCBjb25zdHJ1Y3RvcihcbiAgICBtZXNzYWdlOiBzdHJpbmcgPSBEZWNvcmF0b3JNZXNzYWdlcy5ERUZBVUxULFxuICAgIC4uLmFjY2VwdGVkVHlwZXM6IHN0cmluZ1tdXG4gICkge1xuICAgIHN1cGVyKG1lc3NhZ2UsIC4uLmFjY2VwdGVkVHlwZXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBBYnN0cmFjdCBtZXRob2QgdGhhdCBtdXN0IGJlIGltcGxlbWVudGVkIGJ5IHN1YmNsYXNzZXMgdG8gcGVyZm9ybSB1cGRhdGUgdmFsaWRhdGlvbi5cbiAgICogQHN1bW1hcnkgVmFsaWRhdGVzIGEgdmFsdWUgYnkgY29tcGFyaW5nIGl0IHRvIGl0cyBvbGQgdmVyc2lvbiB0byBkZXRlcm1pbmUgaWYgdGhlIHVwZGF0ZSBpcyB2YWxpZC5cbiAgICogQHBhcmFtIHthbnl9IHZhbHVlIC0gVGhlIG5ldyB2YWx1ZSB0byB2YWxpZGF0ZVxuICAgKiBAcGFyYW0ge2FueX0gb2xkVmFsdWUgLSBUaGUgcHJldmlvdXMgdmFsdWUgdG8gY29tcGFyZSBhZ2FpbnN0XG4gICAqIEBwYXJhbSB7YW55W119IGFyZ3MgLSBBZGRpdGlvbmFsIGFyZ3VtZW50cyB0aGF0IG1heSBiZSBuZWVkZWQgZm9yIHZhbGlkYXRpb25cbiAgICogQHJldHVybiB7c3RyaW5nIHwgdW5kZWZpbmVkfSBBbiBlcnJvciBtZXNzYWdlIGlmIHZhbGlkYXRpb24gZmFpbHMsIHVuZGVmaW5lZCBpZiB2YWxpZGF0aW9uIHBhc3Nlc1xuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IHVwZGF0ZUhhc0Vycm9ycyhcbiAgICB2YWx1ZTogYW55LFxuICAgIG9sZFZhbHVlOiBhbnksXG4gICAgLi4uYXJnczogYW55W11cbiAgKTogc3RyaW5nIHwgdW5kZWZpbmVkO1xufVxuIl19