"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = require("tslib");
var BaseHandler_1 = require("./BaseHandler");
var ramlParser = require("raml-1-parser");
var utils_1 = require("../commons/utils/utils");
/**
* Raml Handler.
*
* @export
* @class RamlHandler
* @extends {BaseHandler}
*/
var RamlHandler = (function (_super) {
tslib_1.__extends(RamlHandler, _super);
/**
* Constructor for the RamlHandler.
*
* @param {*} options Spec path.
*/
function RamlHandler(options) {
var _this = _super.call(this, 'raml') || this;
_this.path = options.path;
return _this;
}
/**
* Parse raml spec file and return a normalized schema.
*
* @returns {Promise<Schema>} parsed schema.
* @memberof RamlHandler
*/
RamlHandler.prototype.parseSchema = function () {
return tslib_1.__awaiter(this, void 0, void 0, function () {
var _this = this;
return tslib_1.__generator(this, function (_a) {
return [2 /*return*/, new Promise(function (resolve, reject) {
try {
var schema_1 = [];
var types = (ramlParser.loadApiSync(_this.path).expand()).types();
types.forEach(function (type) {
var columns = type.toJSON({ serializeMetadata: false })[type.name()].properties;
var table = {
name: utils_1.default.toTableName(type.name()),
columns: [],
};
Object.keys(columns).map(function (name) {
table.columns.push(_this.normalizeColumnSchema(columns[name]));
});
schema_1.push(table);
});
resolve(_this.normalizeRelations(schema_1));
}
catch (e) {
reject(new Error('Incorrect RAML file!'));
}
})];
});
});
};
return RamlHandler;
}(BaseHandler_1.default));
exports.default = RamlHandler;
|