@forestadmin/datasource-toolkit
Version:
31 lines • 2.77 kB
JavaScript
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const field_1 = __importDefault(require("./field"));
const errors_1 = require("../errors");
const index_1 = require("../index");
class RecordValidator {
static validate(collection, recordData) {
if (!recordData || Object.keys(recordData).length === 0) {
throw new errors_1.ValidationError('The record data is empty');
}
for (const key of Object.keys(recordData)) {
const schema = index_1.SchemaUtils.getField(collection.schema, key, collection.name);
if (schema.type === 'Column') {
field_1.default.validate(collection, key, [recordData[key]]);
}
else if (schema.type === 'OneToOne' || schema.type === 'ManyToOne') {
const subRecord = recordData[key];
const association = collection.dataSource.getCollection(schema.foreignCollection);
RecordValidator.validate(association, subRecord);
}
else {
throw new errors_1.ValidationError(`Unexpected schema type '${schema.type}' while traversing record`);
}
}
}
}
exports.default = RecordValidator;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjb3JkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3ZhbGlkYXRpb24vcmVjb3JkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsb0RBQXFDO0FBQ3JDLHNDQUE0QztBQUM1QyxvQ0FBdUM7QUFJdkMsTUFBcUIsZUFBZTtJQUNsQyxNQUFNLENBQUMsUUFBUSxDQUFDLFVBQXNCLEVBQUUsVUFBc0I7UUFDNUQsSUFBSSxDQUFDLFVBQVUsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDdkQsTUFBTSxJQUFJLHdCQUFlLENBQUMsMEJBQTBCLENBQUMsQ0FBQztTQUN2RDtRQUVELEtBQUssTUFBTSxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRTtZQUN6QyxNQUFNLE1BQU0sR0FBRyxtQkFBVyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7WUFFN0UsSUFBSSxNQUFNLENBQUMsSUFBSSxLQUFLLFFBQVEsRUFBRTtnQkFDNUIsZUFBYyxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUM3RDtpQkFBTSxJQUFJLE1BQU0sQ0FBQyxJQUFJLEtBQUssVUFBVSxJQUFJLE1BQU0sQ0FBQyxJQUFJLEtBQUssV0FBVyxFQUFFO2dCQUNwRSxNQUFNLFNBQVMsR0FBRyxVQUFVLENBQUMsR0FBRyxDQUFlLENBQUM7Z0JBRWhELE1BQU0sV0FBVyxHQUFHLFVBQVUsQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO2dCQUNsRixlQUFlLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxTQUFTLENBQUMsQ0FBQzthQUNsRDtpQkFBTTtnQkFDTCxNQUFNLElBQUksd0JBQWUsQ0FDdkIsMkJBQTJCLE1BQU0sQ0FBQyxJQUFJLDJCQUEyQixDQUNsRSxDQUFDO2FBQ0g7U0FDRjtJQUNILENBQUM7Q0FDRjtBQXZCRCxrQ0F1QkMifQ==
;