Files
system-builder/dist/processDef.js

90 lines
3.9 KiB
JavaScript

"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
var path = __importStar(require("path"));
var simmer_def_example_1 = __importDefault(require("./simmer-def-example"));
var ncp = require('ncp').ncp;
function createDatabase(storageDef) {
var tableCreationQueries = [];
for (var i in storageDef.tables) {
tableCreationQueries.push(getTableCreationString(storageDef.tables[i]));
}
for (var i in storageDef.relations) {
tableCreationQueries.push(getTableRelationsCreationString(storageDef.relations[i]));
}
tableCreationQueries.map(function (query) {
console.log(query);
});
}
function getTableCreationString(tableDef) {
var primaryKeyString = tableDef.name + "_id VARCHAR(36) PRIMARY KEY";
var columnString = "" + primaryKeyString;
var defaultColumns = "created DATETIME NOT NULL DEFAULT NOW(), modified DATETIME NOT NULL DEFAULT NOW()";
var indexString = "";
// columns
for (var i in tableDef.columns) {
var column = tableDef.columns[i];
columnString = columnString + ", " + createColumnString(column);
}
// relations
for (var i in tableDef.relations) {
var relation = tableDef.relations[i];
columnString = columnString + ", " + relation.table + "_id VARCHAR(36)";
}
// default created & modified
columnString = columnString + ", " + defaultColumns;
return "CREATE TABLE IF NOT EXISTS " + tableDef.name + " (" + columnString + (indexString !== '' ? ', ' + indexString : '') + ");";
}
function createColumnString(column) {
var typeMap = {
"blob": "BLOB",
"boolean": "BOOLEAN",
"date": "DATE",
"dateTIME": "DATETIME",
"number": "INT",
"string": "VARCHAR(255)",
};
return column.name + " " + typeMap[column.type] + (column.nullable ? '' : ' NOT NULL') + (column.default ? ' DEFAULT ' + column.default : '') + (column.autoIncrement ? ' AUTO_INCREMENT' : '') + (column.unique ? ' UNIQUE' : '');
}
function getTableRelationsCreationString(relationsDef) {
var columnString = relationsDef.left + "_id VARCHAR(36) NOT NULL, " + relationsDef.right + "_id VARCHAR(36) NOT NULL";
var indexString = "INDEX " + relationsDef.left + "_id_index (" + relationsDef.left + "_id), INDEX " + relationsDef.right + "_id_index (" + relationsDef.right + "_id)";
if (relationsDef.columns && relationsDef.columns.length) {
for (var i in relationsDef.columns) {
var column = relationsDef.columns[i];
columnString = columnString + ", " + createColumnString(column);
}
}
return "CREATE TABLE IF NOT EXISTS " + relationsDef.left + "_" + relationsDef.right + " (" + columnString + (indexString !== '' ? ', ' + indexString : '') + ");";
}
ncp(path(__dirname, 'frame'), path(__dirname, 'test'), function (err) {
if (err) {
console.log(err);
}
else {
console.log('success copying files');
}
});
createDatabase(simmer_def_example_1.default.storage);