sequelize-ts-boilerplate
Version:
A REST API scaffolding tool designed to scale and easily generate CRUD endpoints based on database schema design
76 lines • 3.95 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
const sequelize_auto_1 = require("./core/services/sequelize-auto");
const general_utils_1 = require("./utils/general-utils");
const TableProperty_1 = require("./core/classes/TableProperty");
const Table_1 = require("./core/classes/Table");
const modelWriter = require("./core/write-scripts/write-dao");
const ormWrapperWriter = require("./core/write-scripts/write-orm-wrapper");
const interfaceWriter = require("./core/write-scripts/write-interfaces");
const controllerWriter = require("./core/write-scripts/express/write-controller");
const serviceWriter = require("./core/write-scripts/write-service");
const routesWriter = require("./core/write-scripts/express/write-route");
const datasourceWriter = require("./core/write-scripts/write-datasource");
const serverFileWriter = require("./core/write-scripts/express/write-server");
const packageJSONWriter = require("./core/write-scripts/write-package-json");
const envWriter = require("./core/write-scripts/write-env");
const gitIgnoreWriter = require("./core/write-scripts/write-gitignore");
const respondFnWriter = require("./core/write-scripts/express/write-respond-fn");
const tsConfigWriter = require("./core/write-scripts/write-ts-config");
exports.bootstrap = (config) => __awaiter(this, void 0, void 0, function* () {
const tables = yield sequelize_auto_1.default.getTables(config);
const tablesToWrite = [];
for (let x in tables) {
let tableName = x;
if (tables.hasOwnProperty(tableName) && general_utils_1.default.isTableAllowed(tableName, config.ORM_GENERATE.skipTables)) {
let table = new Table_1.Table({
tableName: x,
metadata: {
lookupTableName: config.ORM_GENERATE.lookup && config.ORM_GENERATE.lookup.tableName
}
});
for (let y in tables[x]) {
if (tables[x].hasOwnProperty(y)) {
let tablePropsObj = tables[x];
table.properties.push(new TableProperty_1.TableProperty(y, table.tableName, tablePropsObj, config));
}
}
tablesToWrite.push(table);
}
}
// WRITE MODEL
modelWriter.generate(tablesToWrite, config);
// WRITE DATASOURCE
datasourceWriter.generate(config);
// WRITE ORM WRAPPER
ormWrapperWriter.generate(config);
// WRITE INTERFACE FILE
interfaceWriter.generate(tablesToWrite, config);
// -------------------------------------------------------//
if (config.ORM_GENERATE.shouldGenerateServices) {
// WRITE SERVICES
serviceWriter.generate(tablesToWrite, config);
}
if (config.CRUD_GENERATE.shouldGenerate) {
// WRITE CONTROLLERS
controllerWriter.generate(tablesToWrite, config);
// WRITE ROUTES
routesWriter.generate(tablesToWrite, config);
// WRITE server.js, .env, package.json, .gitignore
serverFileWriter.generate(tablesToWrite, config);
packageJSONWriter.generate();
envWriter.generate(config);
gitIgnoreWriter.generate();
respondFnWriter.generate();
tsConfigWriter.generate();
}
});
//# sourceMappingURL=bootstrap.js.map