@vulcan-sql/build
Version:
VulcanSQL package for building projects
40 lines • 1.81 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.AddParameter = void 0;
const tslib_1 = require("tslib");
const core_1 = require("@vulcan-sql/core");
const middleware_1 = require("./middleware");
const constants_1 = require("./constants");
class AddParameter extends middleware_1.SchemaParserMiddleware {
handle(schemas, next) {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
// Add fallback value for request property
schemas.request = schemas.request || [];
const metadata = schemas.metadata;
// Skip validation if no metadata found
if (!(metadata === null || metadata === void 0 ? void 0 : metadata[constants_1.PARAMETER_METADATA_NAME]))
return next();
const parameters = metadata[constants_1.PARAMETER_METADATA_NAME];
parameters.forEach((parameter) => {
// We only check the first value of nested parameters
const name = parameter.name.split('.')[0];
const existedParam = schemas.request.find((paramInSchema) => paramInSchema.fieldName === name);
if (existedParam) {
if (!existedParam.validators)
existedParam.validators = [];
existedParam.validators.push(...(parameter.validators || []));
}
else {
schemas.request.push({
fieldName: name,
fieldIn: core_1.FieldInType.QUERY,
validators: parameter.validators || [],
});
}
});
yield next();
});
}
}
exports.AddParameter = AddParameter;
//# sourceMappingURL=addParameter.js.map