liquido
Version:
Conjunto de ferramentas para desenvolvimento de aplicações para a internet 100% em português
141 lines • 6.27 kB
JavaScript
;
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (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 () {
var ownKeys = function(o) {
ownKeys = Object.getOwnPropertyNames || function (o) {
var ar = [];
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
return ar;
};
return ownKeys(o);
};
return function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
__setModuleDefault(result, mod);
return result;
};
})();
Object.defineProperty(exports, "__esModule", { value: true });
exports.inicializarBancoDeleguaEntidades = inicializarBancoDeleguaEntidades;
const fs = __importStar(require("fs"));
const path = __importStar(require("path"));
const chalk_1 = require("chalk");
async function inicializarBancoDeleguaEntidades(tecnologia, caminhoBanco, apenasEstrutura, apenasDados, instanciaExistente) {
let moduloDeleguaEntidades;
try {
const pacote = '@designliquido/delegua-entidades';
moduloDeleguaEntidades = await Promise.resolve(`${pacote}`).then(s => __importStar(require(s)));
}
catch (_a) {
throw new Error('Pacote @designliquido/delegua-entidades não encontrado. ' +
'Instale-o com: npm install @designliquido/delegua-entidades');
}
const { ExecutorMigracoes, Semeador } = moduloDeleguaEntidades;
let lincones;
if (instanciaExistente) {
lincones = instanciaExistente;
}
else {
const moduloTecnologia = await Promise.resolve(`${`@designliquido/lincones-${tecnologia}`}`).then(s => __importStar(require(s)));
const ConstrutorTecnologia = moduloTecnologia.default;
lincones = new ConstrutorTecnologia();
await lincones.iniciar(caminhoBanco);
}
const deveExecutarMigracoes = !apenasDados;
const deveExecutarSementes = !apenasEstrutura;
if (deveExecutarMigracoes) {
await executarMigracoes(ExecutorMigracoes, lincones);
}
if (deveExecutarSementes) {
await executarSementes(Semeador, lincones);
}
}
async function executarMigracoes(ExecutorMigracoes, lincones) {
var _a, _b;
const diretorioMigracoes = path.resolve(process.cwd(), 'migracoes');
if (!fs.existsSync(diretorioMigracoes)) {
console.info((0, chalk_1.yellow)('Diretório "migracoes/" não encontrado. Nenhuma migração executada.'));
return;
}
const arquivos = fs.readdirSync(diretorioMigracoes)
.filter(f => f.endsWith('.js') || f.endsWith('.ts'))
.sort();
if (arquivos.length === 0) {
console.info((0, chalk_1.yellow)('Nenhum arquivo de migração encontrado em "migracoes/".'));
return;
}
const executor = new ExecutorMigracoes(lincones);
let sucessos = 0;
let falhas = 0;
for (const arquivo of arquivos) {
const caminhoArquivo = path.join(diretorioMigracoes, arquivo);
try {
const modulo = await Promise.resolve(`${caminhoArquivo}`).then(s => __importStar(require(s)));
const migracao = (_a = modulo.default) !== null && _a !== void 0 ? _a : modulo;
await executor.executar(migracao);
console.info((0, chalk_1.green)(` ✓ ${arquivo}`));
sucessos++;
}
catch (erro) {
console.error((0, chalk_1.red)(` ✗ ${arquivo}: ${(_b = erro === null || erro === void 0 ? void 0 : erro.message) !== null && _b !== void 0 ? _b : erro}`));
falhas++;
}
}
console.info((0, chalk_1.yellow)(`Migrações: ${sucessos} executada(s), ${falhas} falha(s).`));
}
async function executarSementes(Semeador, lincones) {
var _a, _b, _c;
const diretorioSementes = path.resolve(process.cwd(), 'sementes');
if (!fs.existsSync(diretorioSementes)) {
console.info((0, chalk_1.yellow)('Diretório "sementes/" não encontrado. Nenhuma semente executada.'));
return;
}
const arquivos = fs.readdirSync(diretorioSementes)
.filter(f => f.endsWith('.js') || f.endsWith('.ts'))
.sort();
if (arquivos.length === 0) {
console.info((0, chalk_1.yellow)('Nenhum arquivo de semente encontrado em "sementes/".'));
return;
}
const classes = [];
for (const arquivo of arquivos) {
const caminhoArquivo = path.join(diretorioSementes, arquivo);
try {
const modulo = await Promise.resolve(`${caminhoArquivo}`).then(s => __importStar(require(s)));
classes.push((_a = modulo.default) !== null && _a !== void 0 ? _a : modulo);
}
catch (erro) {
console.error((0, chalk_1.red)(` ✗ Erro ao importar semente ${arquivo}: ${(_b = erro === null || erro === void 0 ? void 0 : erro.message) !== null && _b !== void 0 ? _b : erro}`));
}
}
if (classes.length === 0)
return;
// Semeador expects a ContextoEntidades, but only accesses .tecnologia at runtime.
const contexto = { tecnologia: lincones };
const semeador = new Semeador(contexto);
try {
await semeador.semear(classes);
console.info((0, chalk_1.green)(` ✓ ${classes.length} semente(s) executada(s).`));
}
catch (erro) {
console.error((0, chalk_1.red)(`Erro ao semear: ${(_c = erro === null || erro === void 0 ? void 0 : erro.message) !== null && _c !== void 0 ? _c : erro}`));
}
}
//# sourceMappingURL=inicializador-delegua-entidades.js.map