UNPKG

pretur.spec

Version:

MDA model specification builder for code generation

46 lines 6.45 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var attribute_1 = require("./attribute"); var relation_1 = require("./relation"); function createSpec(options, initializer) { var spec = { attributes: [], indexes: { unique: [] }, initialize: initialize, join: false, model: undefined, name: options.name, relations: [], scope: options.scope, type: undefined, }; var builder = { attribute: attribute_1.createAttributeBuilder(spec), relation: relation_1.createRelationBuilder(spec), multicolumnUniqueIndex: function () { var fields = []; for (var _i = 0; _i < arguments.length; _i++) { fields[_i] = arguments[_i]; } spec.indexes.unique.push(fields); }, }; function initialize() { if (typeof initializer === 'function') { initializer(builder); } } return spec; } exports.createSpec = createSpec; function initializePool(pool) { for (var _i = 0, _a = Object.values(pool); _i < _a.length; _i++) { var scope = _a[_i]; for (var _b = 0, _c = Object.values(scope); _b < _c.length; _b++) { var spec = _c[_b]; spec.initialize(); } } } exports.initializePool = initializePool; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BlYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9zcGVjLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEseUNBQWtGO0FBQ2xGLHVDQUErRTtBQThDL0Usb0JBQ0UsT0FBcUMsRUFDckMsV0FBbUQ7SUFFbkQsSUFBTSxJQUFJLEdBQVk7UUFDcEIsVUFBVSxFQUFFLEVBQUU7UUFDZCxPQUFPLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFO1FBQ3ZCLFVBQVUsWUFBQTtRQUNWLElBQUksRUFBRSxLQUFLO1FBQ1gsS0FBSyxFQUFFLFNBQVU7UUFDakIsSUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJO1FBQ2xCLFNBQVMsRUFBRSxFQUFFO1FBQ2IsS0FBSyxFQUFFLE9BQU8sQ0FBQyxLQUFLO1FBQ3BCLElBQUksRUFBRSxTQUFVO0tBQ2pCLENBQUM7SUFFRixJQUFNLE9BQU8sR0FBbUI7UUFDOUIsU0FBUyxFQUFFLGtDQUFzQixDQUFDLElBQUksQ0FBQztRQUN2QyxRQUFRLEVBQUUsZ0NBQXFCLENBQUMsSUFBSSxDQUFDO1FBRXJDLHNCQUFzQjtZQUFDLGdCQUFnQztpQkFBaEMsVUFBZ0MsRUFBaEMscUJBQWdDLEVBQWhDLElBQWdDO2dCQUFoQywyQkFBZ0M7O1lBQ3JELElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNuQyxDQUFDO0tBQ0YsQ0FBQztJQUVGO1FBQ0UsRUFBRSxDQUFDLENBQUMsT0FBTyxXQUFXLEtBQUssVUFBVSxDQUFDLENBQUMsQ0FBQztZQUN0QyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdkIsQ0FBQztJQUNILENBQUM7SUFFRCxNQUFNLENBQUMsSUFBSSxDQUFDO0FBQ2QsQ0FBQztBQWhDRCxnQ0FnQ0M7QUFNRCx3QkFBbUQsSUFBTztJQUN4RCxHQUFHLENBQUMsQ0FBZ0IsVUFBbUIsRUFBbkIsS0FBQSxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFuQixjQUFtQixFQUFuQixJQUFtQjtRQUFsQyxJQUFNLEtBQUssU0FBQTtRQUNkLEdBQUcsQ0FBQyxDQUFlLFVBQW9CLEVBQXBCLEtBQUEsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBcEIsY0FBb0IsRUFBcEIsSUFBb0I7WUFBbEMsSUFBTSxJQUFJLFNBQUE7WUFDYixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7U0FDbkI7S0FDRjtBQUNILENBQUM7QUFORCx3Q0FNQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNyZWF0ZUF0dHJpYnV0ZUJ1aWxkZXIsIEF0dHJpYnV0ZUJ1aWxkZXIsIEF0dHJpYnV0ZSB9IGZyb20gJy4vYXR0cmlidXRlJztcclxuaW1wb3J0IHsgUmVsYXRpb24sIFJlbGF0aW9uc0J1aWxkZXIsIGNyZWF0ZVJlbGF0aW9uQnVpbGRlciB9IGZyb20gJy4vcmVsYXRpb24nO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJbmRleGVzPEY+IHtcclxuICB1bmlxdWU6IChrZXlvZiBGKVtdW107XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIFJlY29yZHMgPSB7IFthbGlhczogc3RyaW5nXTogU3BlY1R5cGUgfTtcclxuZXhwb3J0IHR5cGUgU2V0cyA9IHsgW2FsaWFzOiBzdHJpbmddOiBTcGVjVHlwZSB9O1xyXG5cclxuZXhwb3J0IHR5cGUgU3BlY1R5cGU8XHJcbiAgRiA9IHt9LFxyXG4gIFIgZXh0ZW5kcyBSZWNvcmRzID0gUmVjb3JkcyxcclxuICBTIGV4dGVuZHMgU2V0cyA9IFNldHMsXHJcbiAgTiBleHRlbmRzIHN0cmluZyA9IHN0cmluZz4gPSB7IG5hbWU6IE47IGZpZWxkczogRjsgcmVjb3JkczogUjsgc2V0czogUyB9O1xyXG5cclxuZXhwb3J0IHR5cGUgRW1wdHlTcGVjID0gU3BlY1R5cGU8e30sIHt9LCB7fSwgc3RyaW5nPjtcclxuZXhwb3J0IHR5cGUgQW55U3BlYyA9IFNwZWNUeXBlPGFueSwgYW55LCBhbnksIHN0cmluZz47XHJcblxyXG5leHBvcnQgdHlwZSBNb2RlbDxUIGV4dGVuZHMgU3BlY1R5cGU+ID1cclxuICAmIFRbJ2ZpZWxkcyddXHJcbiAgJiB7W1AgaW4ga2V5b2YgVFsncmVjb3JkcyddXTogTW9kZWw8VFsncmVjb3JkcyddW1BdPn1cclxuICAmIHtbUCBpbiBrZXlvZiBUWydzZXRzJ11dOiBNb2RlbDxUWydzZXRzJ11bUF0+W119O1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBTcGVjPFQgZXh0ZW5kcyBTcGVjVHlwZSA9IFNwZWNUeXBlPiB7XHJcbiAgbW9kZWw6IE1vZGVsPFQ+O1xyXG4gIHR5cGU6IFQ7XHJcbiAgc2NvcGU6IHN0cmluZztcclxuICBuYW1lOiBUWyduYW1lJ107XHJcbiAgam9pbjogYm9vbGVhbjtcclxuICBhdHRyaWJ1dGVzOiBBdHRyaWJ1dGU8VFsnZmllbGRzJ10+W107XHJcbiAgaW5kZXhlczogSW5kZXhlczxUWydmaWVsZHMnXT47XHJcbiAgcmVsYXRpb25zOiBSZWxhdGlvbjxUPltdO1xyXG4gIGluaXRpYWxpemU6ICgpID0+IHZvaWQ7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQ3JlYXRlU3BlY09wdGlvbnM8TiBleHRlbmRzIHN0cmluZz4ge1xyXG4gIG5hbWU6IE47XHJcbiAgc2NvcGU6IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBTcGVjQnVpbGRlcjxUIGV4dGVuZHMgU3BlY1R5cGU+IHtcclxuICBhdHRyaWJ1dGU6IEF0dHJpYnV0ZUJ1aWxkZXI8VFsnZmllbGRzJ10+O1xyXG4gIHJlbGF0aW9uOiBSZWxhdGlvbnNCdWlsZGVyPFQ+O1xyXG4gIG11bHRpY29sdW1uVW5pcXVlSW5kZXgoLi4uZmllbGRzOiAoa2V5b2YgVFsnZmllbGRzJ10pW10pOiB2b2lkO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlU3BlYzxUIGV4dGVuZHMgU3BlY1R5cGU+KFxyXG4gIG9wdGlvbnM6IENyZWF0ZVNwZWNPcHRpb25zPFRbJ25hbWUnXT4sXHJcbiAgaW5pdGlhbGl6ZXI/OiAoc3BlY0J1aWxkZXI6IFNwZWNCdWlsZGVyPFQ+KSA9PiB2b2lkLFxyXG4pOiBTcGVjPFQ+IHtcclxuICBjb25zdCBzcGVjID0gPFNwZWM8VD4+e1xyXG4gICAgYXR0cmlidXRlczogW10sXHJcbiAgICBpbmRleGVzOiB7IHVuaXF1ZTogW10gfSxcclxuICAgIGluaXRpYWxpemUsXHJcbiAgICBqb2luOiBmYWxzZSxcclxuICAgIG1vZGVsOiB1bmRlZmluZWQhLFxyXG4gICAgbmFtZTogb3B0aW9ucy5uYW1lLFxyXG4gICAgcmVsYXRpb25zOiBbXSxcclxuICAgIHNjb3BlOiBvcHRpb25zLnNjb3BlLFxyXG4gICAgdHlwZTogdW5kZWZpbmVkISxcclxuICB9O1xyXG5cclxuICBjb25zdCBidWlsZGVyID0gPFNwZWNCdWlsZGVyPFQ+PntcclxuICAgIGF0dHJpYnV0ZTogY3JlYXRlQXR0cmlidXRlQnVpbGRlcihzcGVjKSxcclxuICAgIHJlbGF0aW9uOiBjcmVhdGVSZWxhdGlvbkJ1aWxkZXIoc3BlYyksXHJcblxyXG4gICAgbXVsdGljb2x1bW5VbmlxdWVJbmRleCguLi5maWVsZHM6IChrZXlvZiBUWydmaWVsZHMnXSlbXSkge1xyXG4gICAgICBzcGVjLmluZGV4ZXMudW5pcXVlLnB1c2goZmllbGRzKTtcclxuICAgIH0sXHJcbiAgfTtcclxuXHJcbiAgZnVuY3Rpb24gaW5pdGlhbGl6ZSgpIHtcclxuICAgIGlmICh0eXBlb2YgaW5pdGlhbGl6ZXIgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgaW5pdGlhbGl6ZXIoYnVpbGRlcik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZXR1cm4gc3BlYztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBTcGVjUG9vbCB7XHJcbiAgW3Njb3BlOiBzdHJpbmddOiB7IFttb2RlbDogc3RyaW5nXTogU3BlYzxhbnk+IH07XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBpbml0aWFsaXplUG9vbDxTIGV4dGVuZHMgU3BlY1Bvb2w+KHBvb2w6IFMpIHtcclxuICBmb3IgKGNvbnN0IHNjb3BlIG9mIE9iamVjdC52YWx1ZXMocG9vbCkpIHtcclxuICAgIGZvciAoY29uc3Qgc3BlYyBvZiBPYmplY3QudmFsdWVzKHNjb3BlKSkge1xyXG4gICAgICBzcGVjLmluaXRpYWxpemUoKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19