Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- (function () {
- var exec = require('child_process').execSync,
- ENV = process.env.npm_lifecycle_event,
- configs = require(`${__dirname}\\AutomacaoPsake.Api\\appsettings.json`),
- homeDir = process.env.HOME || process.env.USERPROFILE,
- fs = require('fs'),
- path = require('path');
- var dataBaseObj = {
- connectionString: function () {
- return configs.Data.DefaultConnection.Connectionstring;
- },
- connection: function () {
- var result = {};
- configs.Data.DefaultConnection.Connectionstring.split(';').forEach(function (x) {
- var arr = x.split("=");
- arr[1] && (result[arr[0]] = arr[1]);
- });
- return result;
- },
- dataBase: function () {
- var connection = this.connection();
- var database = connection.Database || connection.database || connection['Initial Catalog'];
- return database;
- },
- server: function () {
- var connection = this.connection();
- var server = connection.Server || connection.server || connection['Data Source'];
- return server;
- },
- user: function () {
- var connection = this.connection();
- var user = connection['User Id'] || connection['user id'];
- return user;
- },
- password: function () {
- var connection = this.connection();
- var password = connection.Password || connection.password;
- return password;
- },
- isLocalDb: function () {
- var user = this.user();
- var password = this.password();
- return !(user && password);
- }
- };
- var runnerCommand = {
- executeSQLCmd: function (cmd) {
- var sqlcmd;
- if (dataBaseObj.isLocalDb()) {
- sqlcmd = `sqlcmd -S "${dataBaseObj.server()}" -E -Q "${cmd}"`;
- } else {
- sqlcmd = `sqlcmd -S "${dataBaseObj.server()}" -Q "${cmd}" -U ${dataBaseObj.user()} -P ${dataBaseObj
- .password()}`;
- }
- this.execute(sqlcmd);
- },
- executeStoreProcedure: function (cmd) {
- var sqlcmd = null;
- if (!dataBaseObj.isLocalDb()) {
- sqlcmd = `sqlcmd -S "${dataBaseObj.server()}" -Q "${cmd}" -U ${dataBaseObj.user()} -P ${dataBaseObj
- .password()} -d ${dataBaseObj.dataBase()}`;
- } else {
- sqlcmd = `sqlcmd -S "${dataBaseObj.server()}" -E -Q "${cmd}" -d ${dataBaseObj.dataBase()}`;
- }
- console.log(cmd);
- this.execute(sqlcmd);
- },
- executePromptCmd: function (cmd) {
- this.execute(cmd);
- },
- cleanDatabase: function () {
- console.log('deleting records from tables...');
- this.executeStoreProcedure("exec sp_msforeachtable @command1 = 'ALTER TABLE ? NOCHECK CONSTRAINT all'");
- this
- .executeStoreProcedure("exec sp_msforeachtable @command1 = 'DELETE ?',@whereand='AND o.id not in (select object_id from sys.tables c where c.name=''VersionInfo'')'");
- this
- .executeStoreProcedure("EXEC sp_msforeachtable @command1 = 'ALTER TABLE ? WITH CHECK CHECK CONSTRAINT all'");
- },
- execute: function (cmd) {
- let child = exec(cmd, { stdio: [process.stdin, process.stdout, process.stderr] });
- }
- };
- switch (ENV) {
- case 'migrate':
- buildMigrateProject();
- runMigrate();
- break;
- case 'configure':
- restorePackages();
- buildSolutionProjects();
- runCreateDataBase();
- runMigrate();
- break;
- }
- function runCreateDataBase() {
- let dbCommand = `\
- IF EXISTS(select * from sys.databases where name='${dataBaseObj.dataBase()}') \
- BEGIN \
- ALTER DATABASE[${dataBaseObj.dataBase()}]SET SINGLE_USER WITH ROLLBACK IMMEDIATE; \
- DROP DATABASE[${dataBaseObj.dataBase()}]; \
- END \
- CREATE DATABASE[${dataBaseObj.dataBase()}]COLLATE SQL_Latin1_General_CP1_CI_AI; `;
- runnerCommand.executeSQLCmd(dbCommand);
- console.log('');
- }
- function runMigrate() {
- console.log('-------------------------------------------------------------------------------');
- console.log('Migrate database ' + dataBaseObj.dataBase());
- console.log('-------------------------------------------------------------------------------');
- let cmd = `${homeDir}\\.nuget\\packages\\fluentmigrator.tools\\1.6.2\\tools\\AnyCPU\\40\\Migrate.exe /connection "${dataBaseObj.connectionString()}" /db sqlserver2012 /target "${__dirname}\\AutomacaoPsake.Migrations\\bin\\Debug\\net461\\AutomacaoPsake.Migrations.dll"`;
- runnerCommand.executePromptCmd(cmd);
- }
- function restorePackages() {
- console.log('-------------------------------------------------------------------------------');
- console.log('Restoring Solution Packages');
- console.log('-------------------------------------------------------------------------------');
- runnerCommand.executePromptCmd(`dotnet restore "${__dirname}"`);
- runnerCommand.executePromptCmd(`dotnet restore "${__dirname}"`);
- }
- function buildMigrateProject() {
- console.log('-------------------------------------------------------------------------------');
- console.log('Build Migrate Project');
- console.log('-------------------------------------------------------------------------------');
- runnerCommand.executePromptCmd(`dotnet build "${__dirname}\\AutomacaoPsake.Migrations"`);
- }
- function buildSolutionProjects() {
- console.log('-------------------------------------------------------------------------------');
- console.log('Build Solution Project');
- console.log('-------------------------------------------------------------------------------');
- getDirectories(__dirname)
- .map((directory) => {
- runnerCommand.executePromptCmd(`dotnet build "${__dirname}\\${directory}"`);
- });
- }
- function getDirectories(srcpath) {
- const directories = fs.readdirSync(srcpath)
- .filter(file => fs.statSync(path.join(srcpath, file)).isDirectory());
- return directories.filter((directory) => {
- return directory !== ".vs" && directory !== ".git";
- });
- }
- })();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement