liquido
Version:
Conjunto de ferramentas para desenvolvimento de aplicações para a internet 100% em português
94 lines • 3.72 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.GeradorInicializacaoLincones = void 0;
const sistemaArquivos = __importStar(require("fs"));
const lincones_js_1 = require("@designliquido/lincones-js");
const flexoes_1 = require("@designliquido/flexoes");
function mapearTipo(tipo) {
switch ((tipo || '').toLowerCase()) {
case 'inteiro':
case 'numero':
return 'INTEIRO';
case 'logico':
case 'lógico':
return 'LOGICO';
case 'caracteres':
return 'CARACTERES';
case 'texto':
default:
return 'TEXTO';
}
}
function obterNomeChave(modelo) {
for (const propriedade of modelo.propriedades) {
if (propriedade.decoradores.some((d) => d.nome === '@chave')) {
return propriedade.nome.lexema;
}
}
for (const propriedade of modelo.propriedades) {
if (propriedade.nome.lexema === 'id')
return 'id';
}
return 'id';
}
class GeradorInicializacaoLincones {
constructor() {
this.tradutor = new lincones_js_1.TradutorReversoSqlAnsi();
}
acrescentarCriarTabela(declaracaoModelo, caminhoArquivo) {
const nomeTabela = (0, flexoes_1.pluralizar)(declaracaoModelo.simbolo.lexema.toLocaleLowerCase('pt'));
const nomeChave = obterNomeChave(declaracaoModelo);
const colunas = declaracaoModelo.propriedades.map((p) => {
const ehChave = p.nome.lexema === nomeChave;
return new lincones_js_1.Coluna(p.nome.lexema, mapearTipo(p.tipo), undefined, false, ehChave, false, ehChave);
});
const criar = new lincones_js_1.Criar(0, nomeTabela, colunas, true);
const ddl = this.tradutor.traduzir([criar]).trim();
const entrada = `${ddl};\n`;
if (sistemaArquivos.existsSync(caminhoArquivo)) {
const conteudo = sistemaArquivos.readFileSync(caminhoArquivo, 'utf-8');
if (conteudo.includes(nomeTabela)) {
return;
}
sistemaArquivos.appendFileSync(caminhoArquivo, `\n${entrada}`);
}
else {
sistemaArquivos.writeFileSync(caminhoArquivo, entrada);
}
}
}
exports.GeradorInicializacaoLincones = GeradorInicializacaoLincones;
//# sourceMappingURL=gerador-inicializacao-lincones.js.map