@designliquido/delegua-entidades 0.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +96 -0
- package/fontes/analisador-dicas.d.ts +49 -0
- package/fontes/analisador-dicas.d.ts.map +1 -0
- package/fontes/analisador-dicas.js +145 -0
- package/fontes/analisador-dicas.js.map +1 -0
- package/fontes/cache-consultas.d.ts +39 -0
- package/fontes/cache-consultas.d.ts.map +1 -0
- package/fontes/cache-consultas.js +98 -0
- package/fontes/cache-consultas.js.map +1 -0
- package/fontes/carregador-lotes.d.ts +64 -0
- package/fontes/carregador-lotes.d.ts.map +1 -0
- package/fontes/carregador-lotes.js +148 -0
- package/fontes/carregador-lotes.js.map +1 -0
- package/fontes/carregador-preguicoso.d.ts +34 -0
- package/fontes/carregador-preguicoso.d.ts.map +1 -0
- package/fontes/carregador-preguicoso.js +157 -0
- package/fontes/carregador-preguicoso.js.map +1 -0
- package/fontes/colecao.d.ts +74 -0
- package/fontes/colecao.d.ts.map +1 -0
- package/fontes/colecao.js +374 -0
- package/fontes/colecao.js.map +1 -0
- package/fontes/construtor-consulta.d.ts +129 -0
- package/fontes/construtor-consulta.d.ts.map +1 -0
- package/fontes/construtor-consulta.js +446 -0
- package/fontes/construtor-consulta.js.map +1 -0
- package/fontes/contexto-entidades.d.ts +119 -0
- package/fontes/contexto-entidades.d.ts.map +1 -0
- package/fontes/contexto-entidades.js +329 -0
- package/fontes/contexto-entidades.js.map +1 -0
- package/fontes/detector-n-mais-um.d.ts +87 -0
- package/fontes/detector-n-mais-um.d.ts.map +1 -0
- package/fontes/detector-n-mais-um.js +225 -0
- package/fontes/detector-n-mais-um.js.map +1 -0
- package/fontes/entidade.d.ts +82 -0
- package/fontes/entidade.d.ts.map +1 -0
- package/fontes/entidade.js +467 -0
- package/fontes/entidade.js.map +1 -0
- package/fontes/erros/erro-concorrencia.d.ts +11 -0
- package/fontes/erros/erro-concorrencia.d.ts.map +1 -0
- package/fontes/erros/erro-concorrencia.js +18 -0
- package/fontes/erros/erro-concorrencia.js.map +1 -0
- package/fontes/erros/erro-tabela-nao-encontrada.d.ts +4 -0
- package/fontes/erros/erro-tabela-nao-encontrada.d.ts.map +1 -0
- package/fontes/erros/erro-tabela-nao-encontrada.js +11 -0
- package/fontes/erros/erro-tabela-nao-encontrada.js.map +1 -0
- package/fontes/erros/erro-validacao.d.ts +9 -0
- package/fontes/erros/erro-validacao.d.ts.map +1 -0
- package/fontes/erros/erro-validacao.js +13 -0
- package/fontes/erros/erro-validacao.js.map +1 -0
- package/fontes/erros/index.d.ts +4 -0
- package/fontes/erros/index.d.ts.map +1 -0
- package/fontes/erros/index.js +20 -0
- package/fontes/erros/index.js.map +1 -0
- package/fontes/gerenciador-cache.d.ts +87 -0
- package/fontes/gerenciador-cache.d.ts.map +1 -0
- package/fontes/gerenciador-cache.js +147 -0
- package/fontes/gerenciador-cache.js.map +1 -0
- package/fontes/ilc/gerador-definicoes.d.ts +13 -0
- package/fontes/ilc/gerador-definicoes.d.ts.map +1 -0
- package/fontes/ilc/gerador-definicoes.js +96 -0
- package/fontes/ilc/gerador-definicoes.js.map +1 -0
- package/fontes/ilc/gerador-entidades.d.ts +10 -0
- package/fontes/ilc/gerador-entidades.d.ts.map +1 -0
- package/fontes/ilc/gerador-entidades.js +318 -0
- package/fontes/ilc/gerador-entidades.js.map +1 -0
- package/fontes/ilc/leitor-configuracao.d.ts +32 -0
- package/fontes/ilc/leitor-configuracao.d.ts.map +1 -0
- package/fontes/ilc/leitor-configuracao.js +124 -0
- package/fontes/ilc/leitor-configuracao.js.map +1 -0
- package/fontes/ilc/migracoes.d.ts +3 -0
- package/fontes/ilc/migracoes.d.ts.map +1 -0
- package/fontes/ilc/migracoes.js +215 -0
- package/fontes/ilc/migracoes.js.map +1 -0
- package/fontes/ilc/semeadura.d.ts +2 -0
- package/fontes/ilc/semeadura.d.ts.map +1 -0
- package/fontes/ilc/semeadura.js +50 -0
- package/fontes/ilc/semeadura.js.map +1 -0
- package/fontes/indicadores-performance/executor-analise-performance.d.ts +80 -0
- package/fontes/indicadores-performance/executor-analise-performance.d.ts.map +1 -0
- package/fontes/indicadores-performance/executor-analise-performance.js +212 -0
- package/fontes/indicadores-performance/executor-analise-performance.js.map +1 -0
- package/fontes/indicadores-performance/index.d.ts +26 -0
- package/fontes/indicadores-performance/index.d.ts.map +1 -0
- package/fontes/indicadores-performance/index.js +199 -0
- package/fontes/indicadores-performance/index.js.map +1 -0
- package/fontes/interfaces-tipos/analise-n1-interface.d.ts +13 -0
- package/fontes/interfaces-tipos/analise-n1-interface.d.ts.map +1 -0
- package/fontes/interfaces-tipos/analise-n1-interface.js +3 -0
- package/fontes/interfaces-tipos/analise-n1-interface.js.map +1 -0
- package/fontes/interfaces-tipos/atributo-interface.d.ts +30 -0
- package/fontes/interfaces-tipos/atributo-interface.d.ts.map +1 -0
- package/fontes/interfaces-tipos/atributo-interface.js +3 -0
- package/fontes/interfaces-tipos/atributo-interface.js.map +1 -0
- package/fontes/interfaces-tipos/coluna-computada-interface.d.ts +16 -0
- package/fontes/interfaces-tipos/coluna-computada-interface.d.ts.map +1 -0
- package/fontes/interfaces-tipos/coluna-computada-interface.js +3 -0
- package/fontes/interfaces-tipos/coluna-computada-interface.js.map +1 -0
- package/fontes/interfaces-tipos/configuracao-banco-dados-interface.d.ts +48 -0
- package/fontes/interfaces-tipos/configuracao-banco-dados-interface.d.ts.map +1 -0
- package/fontes/interfaces-tipos/configuracao-banco-dados-interface.js +3 -0
- package/fontes/interfaces-tipos/configuracao-banco-dados-interface.js.map +1 -0
- package/fontes/interfaces-tipos/entidade-interface.d.ts +37 -0
- package/fontes/interfaces-tipos/entidade-interface.d.ts.map +1 -0
- package/fontes/interfaces-tipos/entidade-interface.js +3 -0
- package/fontes/interfaces-tipos/entidade-interface.js.map +1 -0
- package/fontes/interfaces-tipos/ganchos.d.ts +12 -0
- package/fontes/interfaces-tipos/ganchos.d.ts.map +1 -0
- package/fontes/interfaces-tipos/ganchos.js +3 -0
- package/fontes/interfaces-tipos/ganchos.js.map +1 -0
- package/fontes/interfaces-tipos/index.d.ts +17 -0
- package/fontes/interfaces-tipos/index.d.ts.map +1 -0
- package/fontes/interfaces-tipos/index.js +33 -0
- package/fontes/interfaces-tipos/index.js.map +1 -0
- package/fontes/interfaces-tipos/indice-interface.d.ts +16 -0
- package/fontes/interfaces-tipos/indice-interface.d.ts.map +1 -0
- package/fontes/interfaces-tipos/indice-interface.js +3 -0
- package/fontes/interfaces-tipos/indice-interface.js.map +1 -0
- package/fontes/interfaces-tipos/informacao-consulta-interface.d.ts +12 -0
- package/fontes/interfaces-tipos/informacao-consulta-interface.d.ts.map +1 -0
- package/fontes/interfaces-tipos/informacao-consulta-interface.js +3 -0
- package/fontes/interfaces-tipos/informacao-consulta-interface.js.map +1 -0
- package/fontes/interfaces-tipos/muito-para-muitos-interface.d.ts +33 -0
- package/fontes/interfaces-tipos/muito-para-muitos-interface.d.ts.map +1 -0
- package/fontes/interfaces-tipos/muito-para-muitos-interface.js +3 -0
- package/fontes/interfaces-tipos/muito-para-muitos-interface.js.map +1 -0
- package/fontes/interfaces-tipos/opcoes-serializacao-interface.d.ts +14 -0
- package/fontes/interfaces-tipos/opcoes-serializacao-interface.d.ts.map +1 -0
- package/fontes/interfaces-tipos/opcoes-serializacao-interface.js +3 -0
- package/fontes/interfaces-tipos/opcoes-serializacao-interface.js.map +1 -0
- package/fontes/interfaces-tipos/polimorfico-interface.d.ts +32 -0
- package/fontes/interfaces-tipos/polimorfico-interface.d.ts.map +1 -0
- package/fontes/interfaces-tipos/polimorfico-interface.js +3 -0
- package/fontes/interfaces-tipos/polimorfico-interface.js.map +1 -0
- package/fontes/interfaces-tipos/relacionamento-interface.d.ts +23 -0
- package/fontes/interfaces-tipos/relacionamento-interface.d.ts.map +1 -0
- package/fontes/interfaces-tipos/relacionamento-interface.js +3 -0
- package/fontes/interfaces-tipos/relacionamento-interface.js.map +1 -0
- package/fontes/interfaces-tipos/restricao-interface.d.ts +14 -0
- package/fontes/interfaces-tipos/restricao-interface.d.ts.map +1 -0
- package/fontes/interfaces-tipos/restricao-interface.js +3 -0
- package/fontes/interfaces-tipos/restricao-interface.js.map +1 -0
- package/fontes/interfaces-tipos/semente-interface.d.ts +7 -0
- package/fontes/interfaces-tipos/semente-interface.d.ts.map +1 -0
- package/fontes/interfaces-tipos/semente-interface.js +3 -0
- package/fontes/interfaces-tipos/semente-interface.js.map +1 -0
- package/fontes/interfaces-tipos/tabela-interface.d.ts +12 -0
- package/fontes/interfaces-tipos/tabela-interface.d.ts.map +1 -0
- package/fontes/interfaces-tipos/tabela-interface.js +3 -0
- package/fontes/interfaces-tipos/tabela-interface.js.map +1 -0
- package/fontes/interfaces-tipos/transacao-interface.d.ts +35 -0
- package/fontes/interfaces-tipos/transacao-interface.d.ts.map +1 -0
- package/fontes/interfaces-tipos/transacao-interface.js +3 -0
- package/fontes/interfaces-tipos/transacao-interface.js.map +1 -0
- package/fontes/migracoes/executor-migracoes.d.ts +14 -0
- package/fontes/migracoes/executor-migracoes.d.ts.map +1 -0
- package/fontes/migracoes/executor-migracoes.js +177 -0
- package/fontes/migracoes/executor-migracoes.js.map +1 -0
- package/fontes/migracoes/gerador-migracoes.d.ts +15 -0
- package/fontes/migracoes/gerador-migracoes.d.ts.map +1 -0
- package/fontes/migracoes/gerador-migracoes.js +108 -0
- package/fontes/migracoes/gerador-migracoes.js.map +1 -0
- package/fontes/migracoes/migracao.d.ts +35 -0
- package/fontes/migracoes/migracao.d.ts.map +1 -0
- package/fontes/migracoes/migracao.js +66 -0
- package/fontes/migracoes/migracao.js.map +1 -0
- package/fontes/migracoes/semeador.d.ts +18 -0
- package/fontes/migracoes/semeador.d.ts.map +1 -0
- package/fontes/migracoes/semeador.js +109 -0
- package/fontes/migracoes/semeador.js.map +1 -0
- package/fontes/rastreador-mudancas.d.ts +27 -0
- package/fontes/rastreador-mudancas.d.ts.map +1 -0
- package/fontes/rastreador-mudancas.js +94 -0
- package/fontes/rastreador-mudancas.js.map +1 -0
- package/fontes/relacionamento.d.ts +11 -0
- package/fontes/relacionamento.d.ts.map +1 -0
- package/fontes/relacionamento.js +15 -0
- package/fontes/relacionamento.js.map +1 -0
- package/fontes/roteador-bancos.d.ts +50 -0
- package/fontes/roteador-bancos.d.ts.map +1 -0
- package/fontes/roteador-bancos.js +90 -0
- package/fontes/roteador-bancos.js.map +1 -0
- package/fontes/serializador.d.ts +46 -0
- package/fontes/serializador.d.ts.map +1 -0
- package/fontes/serializador.js +79 -0
- package/fontes/serializador.js.map +1 -0
- package/fontes/taquigrafia.d.ts +41 -0
- package/fontes/taquigrafia.d.ts.map +1 -0
- package/fontes/taquigrafia.js +96 -0
- package/fontes/taquigrafia.js.map +1 -0
- package/fontes/tipos.d.ts +3 -0
- package/fontes/tipos.d.ts.map +1 -0
- package/fontes/tipos.js +3 -0
- package/fontes/tipos.js.map +1 -0
- package/fontes/transacao.d.ts +81 -0
- package/fontes/transacao.d.ts.map +1 -0
- package/fontes/transacao.js +243 -0
- package/fontes/transacao.js.map +1 -0
- package/fontes/validacoes/validador.d.ts +19 -0
- package/fontes/validacoes/validador.d.ts.map +1 -0
- package/fontes/validacoes/validador.js +157 -0
- package/fontes/validacoes/validador.js.map +1 -0
- package/index.d.ts +36 -0
- package/index.d.ts.map +1 -0
- package/index.js +59 -0
- package/index.js.map +1 -0
- package/package.json +55 -0
|
@@ -0,0 +1,318 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
/**
|
|
4
|
+
* CLI para Gerador de Modelos (Delégua)
|
|
5
|
+
*
|
|
6
|
+
* Uso:
|
|
7
|
+
* yarn gerar-modelo Usuario nome:texto email:texto idade:numero
|
|
8
|
+
* yarn gerar-modelo Usuario nome:texto --pertenceA Empresa --temMuitos Pedidos
|
|
9
|
+
*/
|
|
10
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
11
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
12
|
+
};
|
|
13
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
+
const path_1 = __importDefault(require("path"));
|
|
15
|
+
const fs_1 = __importDefault(require("fs"));
|
|
16
|
+
const flexoes_1 = require("@designliquido/flexoes");
|
|
17
|
+
const DIRETORIO_MODELOS = path_1.default.join(process.cwd(), "modelos");
|
|
18
|
+
const DIRETORIO_MIGRACOES = path_1.default.join(process.cwd(), "migracoes", "geradas");
|
|
19
|
+
const MAPEAMENTO_TIPOS = {
|
|
20
|
+
"texto": "texto",
|
|
21
|
+
"numero": "numero",
|
|
22
|
+
"inteiro": "numero",
|
|
23
|
+
"decimal": "numero",
|
|
24
|
+
"booleano": "logico",
|
|
25
|
+
"logico": "logico",
|
|
26
|
+
"data": "data",
|
|
27
|
+
"data_hora": "data_hora",
|
|
28
|
+
"timestamp": "data_hora"
|
|
29
|
+
};
|
|
30
|
+
function mostrarAjuda() {
|
|
31
|
+
console.log(`
|
|
32
|
+
delegua-entidades: Gerador de Modelos (Delégua)
|
|
33
|
+
|
|
34
|
+
USO:
|
|
35
|
+
yarn gerar-modelo <NomeModelo> [campos] [opções]
|
|
36
|
+
|
|
37
|
+
ARGUMENTOS:
|
|
38
|
+
NomeModelo Nome do modelo em PascalCase (ex: Usuario, Produto)
|
|
39
|
+
campos Campos no formato nome:tipo (ex: nome:texto email:texto)
|
|
40
|
+
|
|
41
|
+
TIPOS SUPORTADOS:
|
|
42
|
+
texto, numero, inteiro, decimal, booleano, logico, data, data_hora, timestamp
|
|
43
|
+
|
|
44
|
+
OPÇÕES:
|
|
45
|
+
--pertenceA <Modelo> Adiciona relacionamento pertence a
|
|
46
|
+
--temUm <Modelo> Adiciona relacionamento tem um
|
|
47
|
+
--temMuitos <Modelo> Adiciona relacionamento tem muitos
|
|
48
|
+
|
|
49
|
+
EXEMPLOS:
|
|
50
|
+
yarn gerar-modelo Usuario nome:texto email:texto idade:numero
|
|
51
|
+
yarn gerar-modelo Produto nome:texto preco:decimal --pertenceA Categoria
|
|
52
|
+
yarn gerar-modelo Usuario nome:texto --temMuitos Pedidos --temMuitos Comentarios
|
|
53
|
+
|
|
54
|
+
NOTAS:
|
|
55
|
+
- Em Delégua, use: classe MeuModelo herda Modelo { ... }
|
|
56
|
+
- Use nomes em PascalCase para nomes de modelos
|
|
57
|
+
- Use nomes em minusculas para campos (ex: nome_completo, email_principal)
|
|
58
|
+
- Arquivos saem em modelos/ com extensão .delegua
|
|
59
|
+
`);
|
|
60
|
+
}
|
|
61
|
+
function validarNomeModelo(nome) {
|
|
62
|
+
return /^[A-Z][a-zA-Z0-9]*$/.test(nome);
|
|
63
|
+
}
|
|
64
|
+
function validarNomeCampo(nome) {
|
|
65
|
+
return /^[a-z][a-z0-9_]*$/.test(nome);
|
|
66
|
+
}
|
|
67
|
+
function validarTipo(tipo) {
|
|
68
|
+
return tipo in MAPEAMENTO_TIPOS;
|
|
69
|
+
}
|
|
70
|
+
function normalizarNomeModelo(nome) {
|
|
71
|
+
return nome.charAt(0).toUpperCase() + nome.slice(1);
|
|
72
|
+
}
|
|
73
|
+
function obterNomeTabelaFromModelo(nomeModelo) {
|
|
74
|
+
// Converte PascalCase para snake_case
|
|
75
|
+
const resultado = nomeModelo
|
|
76
|
+
.replace(/([A-Z])/g, "_$1")
|
|
77
|
+
.toLowerCase()
|
|
78
|
+
.replace(/^_/, "");
|
|
79
|
+
// Pluraliza em português usando flexoes
|
|
80
|
+
return (0, flexoes_1.pluralizar)(resultado);
|
|
81
|
+
}
|
|
82
|
+
function compreenderArgumentos() {
|
|
83
|
+
const args = process.argv.slice(2);
|
|
84
|
+
if (args.length === 0 || args[0] === "--help" || args[0] === "-h") {
|
|
85
|
+
mostrarAjuda();
|
|
86
|
+
return null;
|
|
87
|
+
}
|
|
88
|
+
const nomeModelo = normalizarNomeModelo(args[0]);
|
|
89
|
+
if (!validarNomeModelo(nomeModelo)) {
|
|
90
|
+
console.error(`❌ Erro: Nome de modelo inválido '${nomeModelo}'.`);
|
|
91
|
+
console.error(" Use PascalCase (ex: Usuario, Produto, Empresa)");
|
|
92
|
+
process.exit(1);
|
|
93
|
+
}
|
|
94
|
+
const campos = [];
|
|
95
|
+
const relacionamentos = [];
|
|
96
|
+
let i = 1;
|
|
97
|
+
while (i < args.length) {
|
|
98
|
+
const arg = args[i];
|
|
99
|
+
if (arg.startsWith("--")) {
|
|
100
|
+
// Opção de relacionamento
|
|
101
|
+
const opcao = arg.slice(2);
|
|
102
|
+
const tipoRelacionamento = opcao;
|
|
103
|
+
if (!(tipoRelacionamento in TIPOS_RELACIONAMENTO)) {
|
|
104
|
+
console.error(`❌ Erro: Opção desconhecida '${arg}'.`);
|
|
105
|
+
mostrarAjuda();
|
|
106
|
+
process.exit(1);
|
|
107
|
+
}
|
|
108
|
+
if (i + 1 >= args.length) {
|
|
109
|
+
console.error(`❌ Erro: Opção '${arg}' requer um nome de modelo.`);
|
|
110
|
+
process.exit(1);
|
|
111
|
+
}
|
|
112
|
+
const modeloAlvo = normalizarNomeModelo(args[i + 1]);
|
|
113
|
+
if (!validarNomeModelo(modeloAlvo)) {
|
|
114
|
+
console.error(`❌ Erro: Nome de modelo alvo inválido '${modeloAlvo}'.`);
|
|
115
|
+
process.exit(1);
|
|
116
|
+
}
|
|
117
|
+
relacionamentos.push({
|
|
118
|
+
tipo: tipoRelacionamento,
|
|
119
|
+
modeloAlvo
|
|
120
|
+
});
|
|
121
|
+
i += 2;
|
|
122
|
+
}
|
|
123
|
+
else if (arg.includes(":")) {
|
|
124
|
+
// Campo
|
|
125
|
+
const [nomeCampo, tipo] = arg.split(":");
|
|
126
|
+
if (!validarNomeCampo(nomeCampo)) {
|
|
127
|
+
console.error(`❌ Erro: Nome de campo inválido '${nomeCampo}'.`);
|
|
128
|
+
console.error(" Use minúsculas e underscores (ex: nome_completo)");
|
|
129
|
+
process.exit(1);
|
|
130
|
+
}
|
|
131
|
+
if (!validarTipo(tipo)) {
|
|
132
|
+
console.error(`❌ Erro: Tipo inválido '${tipo}' para campo '${nomeCampo}'.`);
|
|
133
|
+
console.error(" Tipos suportados: texto, numero, booleano, data, data_hora");
|
|
134
|
+
process.exit(1);
|
|
135
|
+
}
|
|
136
|
+
campos.push({
|
|
137
|
+
nome: nomeCampo,
|
|
138
|
+
tipo: MAPEAMENTO_TIPOS[tipo]
|
|
139
|
+
});
|
|
140
|
+
i++;
|
|
141
|
+
}
|
|
142
|
+
else {
|
|
143
|
+
console.error(`❌ Erro: Argumento inválido '${arg}'.`);
|
|
144
|
+
mostrarAjuda();
|
|
145
|
+
process.exit(1);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
if (campos.length === 0) {
|
|
149
|
+
console.error("❌ Erro: Nenhum campo especificado.");
|
|
150
|
+
console.error(" Use: yarn gerar-modelo Usuario nome:texto email:texto");
|
|
151
|
+
process.exit(1);
|
|
152
|
+
}
|
|
153
|
+
return {
|
|
154
|
+
nome: nomeModelo,
|
|
155
|
+
campos,
|
|
156
|
+
relacionamentos
|
|
157
|
+
};
|
|
158
|
+
}
|
|
159
|
+
function gerarCodigoModelo(config) {
|
|
160
|
+
const nomeTabela = obterNomeTabelaFromModelo(config.nome);
|
|
161
|
+
const camposDeclaracao = config.campos
|
|
162
|
+
.map((c) => ` ${c.nome}: ${c.tipo}`)
|
|
163
|
+
.join("\n");
|
|
164
|
+
const relacionamentosDeclaracao = config.relacionamentos
|
|
165
|
+
.map((r) => {
|
|
166
|
+
let propriedade;
|
|
167
|
+
if (r.tipo === "temMuitos") {
|
|
168
|
+
// Para relações temMuitos, coloca o nome no plural da entidade alvo
|
|
169
|
+
propriedade = obterNomeTabelaFromModelo(r.modeloAlvo);
|
|
170
|
+
}
|
|
171
|
+
else {
|
|
172
|
+
// Para pertenceA e temUm, coloca em minúsculas (singular)
|
|
173
|
+
propriedade = r.modeloAlvo.toLowerCase();
|
|
174
|
+
}
|
|
175
|
+
return ` @${r.tipo}\n ${propriedade}: ${r.modeloAlvo}`;
|
|
176
|
+
})
|
|
177
|
+
.join("\n");
|
|
178
|
+
const todasAsPropriedades = camposDeclaracao +
|
|
179
|
+
(relacionamentosDeclaracao ? "\n\n" + relacionamentosDeclaracao : "");
|
|
180
|
+
return `/**
|
|
181
|
+
* Modelo ${config.nome}
|
|
182
|
+
*
|
|
183
|
+
* Tabela: ${nomeTabela}
|
|
184
|
+
*/
|
|
185
|
+
@tabela("${nomeTabela}")
|
|
186
|
+
classe ${config.nome} herda Modelo {
|
|
187
|
+
id: numero
|
|
188
|
+
|
|
189
|
+
${todasAsPropriedades}
|
|
190
|
+
}
|
|
191
|
+
`;
|
|
192
|
+
}
|
|
193
|
+
function gerarMigracao(config) {
|
|
194
|
+
const agora = new Date();
|
|
195
|
+
const timestamp = [
|
|
196
|
+
agora.getFullYear(),
|
|
197
|
+
String(agora.getMonth() + 1).padStart(2, "0"),
|
|
198
|
+
String(agora.getDate()).padStart(2, "0"),
|
|
199
|
+
String(agora.getHours()).padStart(2, "0"),
|
|
200
|
+
String(agora.getMinutes()).padStart(2, "0"),
|
|
201
|
+
String(agora.getSeconds()).padStart(2, "0")
|
|
202
|
+
].join("");
|
|
203
|
+
const nomeTabela = obterNomeTabelaFromModelo(config.nome);
|
|
204
|
+
const descricao = `Criar tabela ${nomeTabela}`;
|
|
205
|
+
const colunas = ["id: INTEIRO (chave primária)"];
|
|
206
|
+
config.campos.forEach((campo) => {
|
|
207
|
+
const tipoSQL = converterTipoParaSQL(campo.tipo);
|
|
208
|
+
colunas.push(`${campo.nome}: ${tipoSQL}`);
|
|
209
|
+
});
|
|
210
|
+
config.relacionamentos.forEach((rel) => {
|
|
211
|
+
if (rel.tipo === "pertenceA") {
|
|
212
|
+
const nomeColuna = `id_${rel.modeloAlvo.toLowerCase()}`;
|
|
213
|
+
colunas.push(`${nomeColuna}: INTEIRO (chave estrangeira)`);
|
|
214
|
+
}
|
|
215
|
+
});
|
|
216
|
+
const colunasComentario = colunas.map((c) => ` // ${c}`).join("\n");
|
|
217
|
+
return `/**
|
|
218
|
+
* Migração: ${descricao}
|
|
219
|
+
* Timestamp: ${timestamp}
|
|
220
|
+
*/
|
|
221
|
+
|
|
222
|
+
classe Migracao${timestamp} herda Migracao {
|
|
223
|
+
versao(): texto {
|
|
224
|
+
retorne "${timestamp}"
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
descricao(): texto {
|
|
228
|
+
retorne "${descricao}"
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
acima() {
|
|
232
|
+
// Crie a tabela ${nomeTabela} com as seguintes colunas:
|
|
233
|
+
${colunasComentario}
|
|
234
|
+
|
|
235
|
+
// Exemplo de implementação:
|
|
236
|
+
// criar_tabela("${nomeTabela}", [
|
|
237
|
+
// { nome: "id", tipo: "INTEIRO", chave_primaria: verdadeiro },
|
|
238
|
+
${config.campos.map((c) => ` // { nome: "${c.nome}", tipo: "${converterTipoParaSQL(c.tipo)}" }`).join(",\n")}
|
|
239
|
+
${config.relacionamentos
|
|
240
|
+
.filter((r) => r.tipo === "pertenceA")
|
|
241
|
+
.map((r) => ` // { nome: "id_${r.modeloAlvo.toLowerCase()}", tipo: "INTEIRO" }`)
|
|
242
|
+
.join(",\n")}
|
|
243
|
+
// ])
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
abaixo() {
|
|
247
|
+
// Reverta a migração aqui
|
|
248
|
+
// excluir_tabela("${nomeTabela}")
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
`;
|
|
252
|
+
}
|
|
253
|
+
function converterTipoParaSQL(tipoDeleguA) {
|
|
254
|
+
const mapeamento = {
|
|
255
|
+
"texto": "TEXTO",
|
|
256
|
+
"numero": "INTEIRO",
|
|
257
|
+
"logico": "LOGICO",
|
|
258
|
+
"data": "DATA",
|
|
259
|
+
"data_hora": "DATA_HORA"
|
|
260
|
+
};
|
|
261
|
+
return mapeamento[tipoDeleguA] || "TEXTO";
|
|
262
|
+
}
|
|
263
|
+
function criarArquivo(caminho, conteudo) {
|
|
264
|
+
const diretorio = path_1.default.dirname(caminho);
|
|
265
|
+
if (!fs_1.default.existsSync(diretorio)) {
|
|
266
|
+
fs_1.default.mkdirSync(diretorio, { recursive: true });
|
|
267
|
+
}
|
|
268
|
+
if (fs_1.default.existsSync(caminho)) {
|
|
269
|
+
console.error(`❌ Erro: Arquivo já existe '${caminho}'.`);
|
|
270
|
+
process.exit(1);
|
|
271
|
+
}
|
|
272
|
+
fs_1.default.writeFileSync(caminho, conteudo, "utf-8");
|
|
273
|
+
}
|
|
274
|
+
const TIPOS_RELACIONAMENTO = {
|
|
275
|
+
pertenceA: true,
|
|
276
|
+
temUm: true,
|
|
277
|
+
temMuitos: true
|
|
278
|
+
};
|
|
279
|
+
function principal() {
|
|
280
|
+
const config = compreenderArgumentos();
|
|
281
|
+
if (!config) {
|
|
282
|
+
process.exit(1);
|
|
283
|
+
}
|
|
284
|
+
try {
|
|
285
|
+
// Gerar arquivo de modelo
|
|
286
|
+
const codigoModelo = gerarCodigoModelo(config);
|
|
287
|
+
const caminhoModelo = path_1.default.join(DIRETORIO_MODELOS, `${config.nome.toLowerCase()}.delegua`);
|
|
288
|
+
criarArquivo(caminhoModelo, codigoModelo);
|
|
289
|
+
console.log(`✓ Modelo criado: ${caminhoModelo}`);
|
|
290
|
+
// Gerar migração
|
|
291
|
+
const codigoMigracao = gerarMigracao(config);
|
|
292
|
+
const agora = new Date();
|
|
293
|
+
const timestamp = [
|
|
294
|
+
agora.getFullYear(),
|
|
295
|
+
String(agora.getMonth() + 1).padStart(2, "0"),
|
|
296
|
+
String(agora.getDate()).padStart(2, "0"),
|
|
297
|
+
String(agora.getHours()).padStart(2, "0"),
|
|
298
|
+
String(agora.getMinutes()).padStart(2, "0"),
|
|
299
|
+
String(agora.getSeconds()).padStart(2, "0")
|
|
300
|
+
].join("");
|
|
301
|
+
const nomeTabela = obterNomeTabelaFromModelo(config.nome);
|
|
302
|
+
const caminhoMigracao = path_1.default.join(DIRETORIO_MIGRACOES, `${timestamp}_criar_tabela_${nomeTabela}.delegua`);
|
|
303
|
+
criarArquivo(caminhoMigracao, codigoMigracao);
|
|
304
|
+
console.log(`✓ Migração criada: ${caminhoMigracao}`);
|
|
305
|
+
console.log(`\n✅ Modelo '${config.nome}' gerado com sucesso!`);
|
|
306
|
+
console.log(`\nPróximos passos:`);
|
|
307
|
+
console.log(` 1. Edite ${caminhoModelo} e revise os campos/relacionamentos`);
|
|
308
|
+
console.log(` 2. Edite ${caminhoMigracao} e implemente a criação da tabela`);
|
|
309
|
+
console.log(` 3. Rode: yarn migracoes executar`);
|
|
310
|
+
console.log(` 4. Importe o modelo onde precisar`);
|
|
311
|
+
}
|
|
312
|
+
catch (erro) {
|
|
313
|
+
console.error(`❌ Erro ao gerar modelo:`, erro);
|
|
314
|
+
process.exit(1);
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
principal();
|
|
318
|
+
//# sourceMappingURL=gerador-entidades.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gerador-entidades.js","sourceRoot":"","sources":["../../../fontes/ilc/gerador-entidades.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { TecnologiaLinconesInterface } from "@designliquido/lincones-js";
|
|
2
|
+
export interface ConfiguracaoConexao {
|
|
3
|
+
tecnologia?: string;
|
|
4
|
+
caminho?: string;
|
|
5
|
+
host?: string;
|
|
6
|
+
porta?: number;
|
|
7
|
+
usuario?: string;
|
|
8
|
+
senha?: string;
|
|
9
|
+
banco?: string;
|
|
10
|
+
}
|
|
11
|
+
export interface ConfiguracaoDelprops {
|
|
12
|
+
dados: {
|
|
13
|
+
[nomeConexao: string]: ConfiguracaoConexao;
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Lê e analisa o arquivo `configuracao.delprops` no diretório informado.
|
|
18
|
+
* Retorna `null` se o arquivo não existir.
|
|
19
|
+
*/
|
|
20
|
+
export declare function lerConfiguracaoDelprops(diretorio?: string): ConfiguracaoDelprops | null;
|
|
21
|
+
/**
|
|
22
|
+
* Instancia o adaptador de tecnologia correspondente à configuração de conexão informada.
|
|
23
|
+
* Retorna `null` se o pacote do adaptador não estiver instalado ou se a tecnologia não for especificada.
|
|
24
|
+
*/
|
|
25
|
+
export declare function instanciarAdaptador(configuracaoConexao: ConfiguracaoConexao): TecnologiaLinconesInterface | null;
|
|
26
|
+
/**
|
|
27
|
+
* Lê `configuracao.delprops` e retorna o adaptador para a primeira conexão configurada em
|
|
28
|
+
* `liquido.dados`. Retorna `null` se o arquivo não existir ou o adaptador não puder ser
|
|
29
|
+
* instanciado.
|
|
30
|
+
*/
|
|
31
|
+
export declare function obterAdaptadorPadrao(diretorio?: string): TecnologiaLinconesInterface | null;
|
|
32
|
+
//# sourceMappingURL=leitor-configuracao.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"leitor-configuracao.d.ts","sourceRoot":"","sources":["../../../fontes/ilc/leitor-configuracao.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAC;AAIzE,MAAM,WAAW,mBAAmB;IAChC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,oBAAoB;IACjC,KAAK,EAAE;QAAE,CAAC,WAAW,EAAE,MAAM,GAAG,mBAAmB,CAAA;KAAE,CAAC;CACzD;AAqBD;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,SAAS,GAAE,MAAsB,GAAG,oBAAoB,GAAG,IAAI,CAuCtG;AAkBD;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,mBAAmB,EAAE,mBAAmB,GAAG,2BAA2B,GAAG,IAAI,CA0BhH;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,GAAE,MAAsB,GAAG,2BAA2B,GAAG,IAAI,CAa1G"}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.lerConfiguracaoDelprops = lerConfiguracaoDelprops;
|
|
7
|
+
exports.instanciarAdaptador = instanciarAdaptador;
|
|
8
|
+
exports.obterAdaptadorPadrao = obterAdaptadorPadrao;
|
|
9
|
+
/// <reference types="node" />
|
|
10
|
+
const fs_1 = __importDefault(require("fs"));
|
|
11
|
+
const path_1 = __importDefault(require("path"));
|
|
12
|
+
const NOME_ARQUIVO_CONFIGURACAO = "configuracao.delprops";
|
|
13
|
+
function analisarValor(valorBruto) {
|
|
14
|
+
const aparado = valorBruto.trim();
|
|
15
|
+
// Texto entre aspas simples
|
|
16
|
+
if (aparado.startsWith("'") && aparado.endsWith("'")) {
|
|
17
|
+
return aparado.slice(1, -1);
|
|
18
|
+
}
|
|
19
|
+
// Booleanos em português
|
|
20
|
+
if (aparado === "verdadeiro")
|
|
21
|
+
return true;
|
|
22
|
+
if (aparado === "falso")
|
|
23
|
+
return false;
|
|
24
|
+
// Número
|
|
25
|
+
const numero = Number(aparado);
|
|
26
|
+
if (!isNaN(numero) && aparado !== "")
|
|
27
|
+
return numero;
|
|
28
|
+
return aparado;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Lê e analisa o arquivo `configuracao.delprops` no diretório informado.
|
|
32
|
+
* Retorna `null` se o arquivo não existir.
|
|
33
|
+
*/
|
|
34
|
+
function lerConfiguracaoDelprops(diretorio = process.cwd()) {
|
|
35
|
+
const caminhoArquivo = path_1.default.join(diretorio, NOME_ARQUIVO_CONFIGURACAO);
|
|
36
|
+
if (!fs_1.default.existsSync(caminhoArquivo)) {
|
|
37
|
+
return null;
|
|
38
|
+
}
|
|
39
|
+
const configuracao = { dados: {} };
|
|
40
|
+
const linhas = fs_1.default.readFileSync(caminhoArquivo, "utf-8").split(/\r?\n/);
|
|
41
|
+
for (const linha of linhas) {
|
|
42
|
+
const aparada = linha.trim();
|
|
43
|
+
// Ignorar linhas vazias e comentários
|
|
44
|
+
if (!aparada || aparada.startsWith("//"))
|
|
45
|
+
continue;
|
|
46
|
+
const indiceSeparador = aparada.indexOf("=");
|
|
47
|
+
if (indiceSeparador === -1)
|
|
48
|
+
continue;
|
|
49
|
+
const chave = aparada.slice(0, indiceSeparador).trim();
|
|
50
|
+
const valorBruto = aparada.slice(indiceSeparador + 1).trim();
|
|
51
|
+
const valor = analisarValor(valorBruto);
|
|
52
|
+
// Só processar chaves no espaço `liquido.dados.<conexao>.<propriedade>`
|
|
53
|
+
const partes = chave.split(".");
|
|
54
|
+
if (partes.length < 4)
|
|
55
|
+
continue;
|
|
56
|
+
if (partes[0] !== "liquido" || partes[1] !== "dados")
|
|
57
|
+
continue;
|
|
58
|
+
const nomeConexao = partes[2];
|
|
59
|
+
const propriedade = partes[3];
|
|
60
|
+
if (!configuracao.dados[nomeConexao]) {
|
|
61
|
+
configuracao.dados[nomeConexao] = {};
|
|
62
|
+
}
|
|
63
|
+
configuracao.dados[nomeConexao][propriedade] = valor;
|
|
64
|
+
}
|
|
65
|
+
return configuracao;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Mapeia o nome da tecnologia ao pacote npm correspondente.
|
|
69
|
+
*/
|
|
70
|
+
function resolverNomePacote(tecnologia) {
|
|
71
|
+
const mapeamento = {
|
|
72
|
+
sqlite: "@designliquido/lincones-sqlite",
|
|
73
|
+
postgresql: "@designliquido/lincones-postgresql",
|
|
74
|
+
postgres: "@designliquido/lincones-postgresql",
|
|
75
|
+
mysql: "@designliquido/lincones-mysql",
|
|
76
|
+
mssql: "@designliquido/lincones-mssql",
|
|
77
|
+
mongodb: "@designliquido/lincones-mongodb",
|
|
78
|
+
};
|
|
79
|
+
return mapeamento[tecnologia.toLowerCase()] ?? `@designliquido/lincones-${tecnologia.toLowerCase()}`;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Instancia o adaptador de tecnologia correspondente à configuração de conexão informada.
|
|
83
|
+
* Retorna `null` se o pacote do adaptador não estiver instalado ou se a tecnologia não for especificada.
|
|
84
|
+
*/
|
|
85
|
+
function instanciarAdaptador(configuracaoConexao) {
|
|
86
|
+
const tecnologia = configuracaoConexao.tecnologia ?? "sqlite";
|
|
87
|
+
const nomePacote = resolverNomePacote(tecnologia);
|
|
88
|
+
let moduloAdaptador;
|
|
89
|
+
try {
|
|
90
|
+
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
91
|
+
moduloAdaptador = require(nomePacote);
|
|
92
|
+
}
|
|
93
|
+
catch {
|
|
94
|
+
console.error(`Adaptador '${nomePacote}' não encontrado. Instale com: yarn add ${nomePacote}`);
|
|
95
|
+
return null;
|
|
96
|
+
}
|
|
97
|
+
// Tentar exportação padrão ou primeira exportação nomeada
|
|
98
|
+
const Construtor = moduloAdaptador.default ??
|
|
99
|
+
moduloAdaptador[Object.keys(moduloAdaptador)[0]];
|
|
100
|
+
if (!Construtor || typeof Construtor !== "function") {
|
|
101
|
+
console.error(`Não foi possível encontrar o construtor no pacote '${nomePacote}'.`);
|
|
102
|
+
return null;
|
|
103
|
+
}
|
|
104
|
+
return new Construtor(configuracaoConexao);
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Lê `configuracao.delprops` e retorna o adaptador para a primeira conexão configurada em
|
|
108
|
+
* `liquido.dados`. Retorna `null` se o arquivo não existir ou o adaptador não puder ser
|
|
109
|
+
* instanciado.
|
|
110
|
+
*/
|
|
111
|
+
function obterAdaptadorPadrao(diretorio = process.cwd()) {
|
|
112
|
+
const configuracao = lerConfiguracaoDelprops(diretorio);
|
|
113
|
+
if (!configuracao)
|
|
114
|
+
return null;
|
|
115
|
+
const nomesConexao = Object.keys(configuracao.dados);
|
|
116
|
+
if (nomesConexao.length === 0) {
|
|
117
|
+
console.error("Nenhuma conexão de dados encontrada em configuracao.delprops.");
|
|
118
|
+
return null;
|
|
119
|
+
}
|
|
120
|
+
// Usar a primeira conexão como padrão
|
|
121
|
+
const conexaoPadrao = configuracao.dados[nomesConexao[0]];
|
|
122
|
+
return instanciarAdaptador(conexaoPadrao);
|
|
123
|
+
}
|
|
124
|
+
//# sourceMappingURL=leitor-configuracao.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"leitor-configuracao.js","sourceRoot":"","sources":["../../../fontes/ilc/leitor-configuracao.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migracoes.d.ts","sourceRoot":"","sources":["../../../fontes/ilc/migracoes.ts"],"names":[],"mappings":""}
|