@vulcan-sql/build
Version:
VulcanSQL package for building projects
38 lines • 1.5 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.GeneratePathParameters = void 0;
const tslib_1 = require("tslib");
const core_1 = require("@vulcan-sql/core");
const middleware_1 = require("./middleware");
// /user/{id} => {request: [{fieldName: 'id', fieldIn: 'path' ....}]}
class GeneratePathParameters extends middleware_1.SchemaParserMiddleware {
handle(schema, next) {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
yield next();
const pattern = /:([^/]+)/g;
const pathParameters = [];
let param = pattern.exec(schema.urlPath || '');
while (param) {
pathParameters.push(param[1]);
param = pattern.exec(schema.urlPath || '');
}
const request = schema.request || [];
pathParameters
.filter((param) => !request.some((req) => req.fieldName === param))
.forEach((param) => request.push({
fieldName: param,
fieldIn: core_1.FieldInType.PATH,
type: core_1.FieldDataType.STRING,
validators: [
{
name: 'required',
args: {},
},
],
}));
schema.request = request;
});
}
}
exports.GeneratePathParameters = GeneratePathParameters;
//# sourceMappingURL=generatePathParameters.js.map