leds-spark-lib
Version:
Biblioteca de geração de código
42 lines (39 loc) • 1.61 kB
JavaScript
import path from "path";
import { isLocalEntity, isModule } from "../../../../models/model.js";
import fs from "fs";
import { expandToString } from "../../../../models/model.js";
export function generate(model, target_folder) {
const modules = model.abstractElements.filter(isModule);
let alternocheck = "";
let deletefrom = "";
let altercheck = "";
for (const mod of modules) {
for (const cls of mod.elements.filter(isLocalEntity)) {
alternocheck += `ALTER TABLE ${cls.name} NOCHECK CONSTRAINT ALL;\n`;
deletefrom += `DELETE FROM ${cls.name};\n`;
altercheck += `ALTER TABLE ${cls.name} WITH CHECK CHECK CONSTRAINT ALL;\n`;
}
}
fs.writeFileSync(path.join(target_folder, "delete.sql"), generatedeletes(alternocheck, deletefrom, altercheck));
fs.writeFileSync(path.join(target_folder, "killdataase.sql"), generateKillDatabase(model));
}
function generatedeletes(alternocheck, deletefrom, altercheck) {
return expandToString `
-- Desabilitar constraints de chave estrangeira
${alternocheck}
-- Deletar dados das tabelas
${deletefrom}
-- Habilitar constraints de chave estrangeira
${altercheck}`;
}
function generateKillDatabase(model) {
return expandToString `
USE [master];
DECLARE @kill varchar(8000) = '';
SELECT @kill = @kill + 'kill ' + CONVERT(varchar(5), session_id) + ';'
FROM sys.dm_exec_sessions
WHERE database_id = db_id('${model.configuration?.database_name || "database_id"}')
EXEC(@kill);
DROP DATABASE [${model.configuration?.database_name || "database_id"}]`;
}
//# sourceMappingURL=generate.js.map