@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.
Files changed (206) hide show
  1. package/README.md +96 -0
  2. package/fontes/analisador-dicas.d.ts +49 -0
  3. package/fontes/analisador-dicas.d.ts.map +1 -0
  4. package/fontes/analisador-dicas.js +145 -0
  5. package/fontes/analisador-dicas.js.map +1 -0
  6. package/fontes/cache-consultas.d.ts +39 -0
  7. package/fontes/cache-consultas.d.ts.map +1 -0
  8. package/fontes/cache-consultas.js +98 -0
  9. package/fontes/cache-consultas.js.map +1 -0
  10. package/fontes/carregador-lotes.d.ts +64 -0
  11. package/fontes/carregador-lotes.d.ts.map +1 -0
  12. package/fontes/carregador-lotes.js +148 -0
  13. package/fontes/carregador-lotes.js.map +1 -0
  14. package/fontes/carregador-preguicoso.d.ts +34 -0
  15. package/fontes/carregador-preguicoso.d.ts.map +1 -0
  16. package/fontes/carregador-preguicoso.js +157 -0
  17. package/fontes/carregador-preguicoso.js.map +1 -0
  18. package/fontes/colecao.d.ts +74 -0
  19. package/fontes/colecao.d.ts.map +1 -0
  20. package/fontes/colecao.js +374 -0
  21. package/fontes/colecao.js.map +1 -0
  22. package/fontes/construtor-consulta.d.ts +129 -0
  23. package/fontes/construtor-consulta.d.ts.map +1 -0
  24. package/fontes/construtor-consulta.js +446 -0
  25. package/fontes/construtor-consulta.js.map +1 -0
  26. package/fontes/contexto-entidades.d.ts +119 -0
  27. package/fontes/contexto-entidades.d.ts.map +1 -0
  28. package/fontes/contexto-entidades.js +329 -0
  29. package/fontes/contexto-entidades.js.map +1 -0
  30. package/fontes/detector-n-mais-um.d.ts +87 -0
  31. package/fontes/detector-n-mais-um.d.ts.map +1 -0
  32. package/fontes/detector-n-mais-um.js +225 -0
  33. package/fontes/detector-n-mais-um.js.map +1 -0
  34. package/fontes/entidade.d.ts +82 -0
  35. package/fontes/entidade.d.ts.map +1 -0
  36. package/fontes/entidade.js +467 -0
  37. package/fontes/entidade.js.map +1 -0
  38. package/fontes/erros/erro-concorrencia.d.ts +11 -0
  39. package/fontes/erros/erro-concorrencia.d.ts.map +1 -0
  40. package/fontes/erros/erro-concorrencia.js +18 -0
  41. package/fontes/erros/erro-concorrencia.js.map +1 -0
  42. package/fontes/erros/erro-tabela-nao-encontrada.d.ts +4 -0
  43. package/fontes/erros/erro-tabela-nao-encontrada.d.ts.map +1 -0
  44. package/fontes/erros/erro-tabela-nao-encontrada.js +11 -0
  45. package/fontes/erros/erro-tabela-nao-encontrada.js.map +1 -0
  46. package/fontes/erros/erro-validacao.d.ts +9 -0
  47. package/fontes/erros/erro-validacao.d.ts.map +1 -0
  48. package/fontes/erros/erro-validacao.js +13 -0
  49. package/fontes/erros/erro-validacao.js.map +1 -0
  50. package/fontes/erros/index.d.ts +4 -0
  51. package/fontes/erros/index.d.ts.map +1 -0
  52. package/fontes/erros/index.js +20 -0
  53. package/fontes/erros/index.js.map +1 -0
  54. package/fontes/gerenciador-cache.d.ts +87 -0
  55. package/fontes/gerenciador-cache.d.ts.map +1 -0
  56. package/fontes/gerenciador-cache.js +147 -0
  57. package/fontes/gerenciador-cache.js.map +1 -0
  58. package/fontes/ilc/gerador-definicoes.d.ts +13 -0
  59. package/fontes/ilc/gerador-definicoes.d.ts.map +1 -0
  60. package/fontes/ilc/gerador-definicoes.js +96 -0
  61. package/fontes/ilc/gerador-definicoes.js.map +1 -0
  62. package/fontes/ilc/gerador-entidades.d.ts +10 -0
  63. package/fontes/ilc/gerador-entidades.d.ts.map +1 -0
  64. package/fontes/ilc/gerador-entidades.js +318 -0
  65. package/fontes/ilc/gerador-entidades.js.map +1 -0
  66. package/fontes/ilc/leitor-configuracao.d.ts +32 -0
  67. package/fontes/ilc/leitor-configuracao.d.ts.map +1 -0
  68. package/fontes/ilc/leitor-configuracao.js +124 -0
  69. package/fontes/ilc/leitor-configuracao.js.map +1 -0
  70. package/fontes/ilc/migracoes.d.ts +3 -0
  71. package/fontes/ilc/migracoes.d.ts.map +1 -0
  72. package/fontes/ilc/migracoes.js +215 -0
  73. package/fontes/ilc/migracoes.js.map +1 -0
  74. package/fontes/ilc/semeadura.d.ts +2 -0
  75. package/fontes/ilc/semeadura.d.ts.map +1 -0
  76. package/fontes/ilc/semeadura.js +50 -0
  77. package/fontes/ilc/semeadura.js.map +1 -0
  78. package/fontes/indicadores-performance/executor-analise-performance.d.ts +80 -0
  79. package/fontes/indicadores-performance/executor-analise-performance.d.ts.map +1 -0
  80. package/fontes/indicadores-performance/executor-analise-performance.js +212 -0
  81. package/fontes/indicadores-performance/executor-analise-performance.js.map +1 -0
  82. package/fontes/indicadores-performance/index.d.ts +26 -0
  83. package/fontes/indicadores-performance/index.d.ts.map +1 -0
  84. package/fontes/indicadores-performance/index.js +199 -0
  85. package/fontes/indicadores-performance/index.js.map +1 -0
  86. package/fontes/interfaces-tipos/analise-n1-interface.d.ts +13 -0
  87. package/fontes/interfaces-tipos/analise-n1-interface.d.ts.map +1 -0
  88. package/fontes/interfaces-tipos/analise-n1-interface.js +3 -0
  89. package/fontes/interfaces-tipos/analise-n1-interface.js.map +1 -0
  90. package/fontes/interfaces-tipos/atributo-interface.d.ts +30 -0
  91. package/fontes/interfaces-tipos/atributo-interface.d.ts.map +1 -0
  92. package/fontes/interfaces-tipos/atributo-interface.js +3 -0
  93. package/fontes/interfaces-tipos/atributo-interface.js.map +1 -0
  94. package/fontes/interfaces-tipos/coluna-computada-interface.d.ts +16 -0
  95. package/fontes/interfaces-tipos/coluna-computada-interface.d.ts.map +1 -0
  96. package/fontes/interfaces-tipos/coluna-computada-interface.js +3 -0
  97. package/fontes/interfaces-tipos/coluna-computada-interface.js.map +1 -0
  98. package/fontes/interfaces-tipos/configuracao-banco-dados-interface.d.ts +48 -0
  99. package/fontes/interfaces-tipos/configuracao-banco-dados-interface.d.ts.map +1 -0
  100. package/fontes/interfaces-tipos/configuracao-banco-dados-interface.js +3 -0
  101. package/fontes/interfaces-tipos/configuracao-banco-dados-interface.js.map +1 -0
  102. package/fontes/interfaces-tipos/entidade-interface.d.ts +37 -0
  103. package/fontes/interfaces-tipos/entidade-interface.d.ts.map +1 -0
  104. package/fontes/interfaces-tipos/entidade-interface.js +3 -0
  105. package/fontes/interfaces-tipos/entidade-interface.js.map +1 -0
  106. package/fontes/interfaces-tipos/ganchos.d.ts +12 -0
  107. package/fontes/interfaces-tipos/ganchos.d.ts.map +1 -0
  108. package/fontes/interfaces-tipos/ganchos.js +3 -0
  109. package/fontes/interfaces-tipos/ganchos.js.map +1 -0
  110. package/fontes/interfaces-tipos/index.d.ts +17 -0
  111. package/fontes/interfaces-tipos/index.d.ts.map +1 -0
  112. package/fontes/interfaces-tipos/index.js +33 -0
  113. package/fontes/interfaces-tipos/index.js.map +1 -0
  114. package/fontes/interfaces-tipos/indice-interface.d.ts +16 -0
  115. package/fontes/interfaces-tipos/indice-interface.d.ts.map +1 -0
  116. package/fontes/interfaces-tipos/indice-interface.js +3 -0
  117. package/fontes/interfaces-tipos/indice-interface.js.map +1 -0
  118. package/fontes/interfaces-tipos/informacao-consulta-interface.d.ts +12 -0
  119. package/fontes/interfaces-tipos/informacao-consulta-interface.d.ts.map +1 -0
  120. package/fontes/interfaces-tipos/informacao-consulta-interface.js +3 -0
  121. package/fontes/interfaces-tipos/informacao-consulta-interface.js.map +1 -0
  122. package/fontes/interfaces-tipos/muito-para-muitos-interface.d.ts +33 -0
  123. package/fontes/interfaces-tipos/muito-para-muitos-interface.d.ts.map +1 -0
  124. package/fontes/interfaces-tipos/muito-para-muitos-interface.js +3 -0
  125. package/fontes/interfaces-tipos/muito-para-muitos-interface.js.map +1 -0
  126. package/fontes/interfaces-tipos/opcoes-serializacao-interface.d.ts +14 -0
  127. package/fontes/interfaces-tipos/opcoes-serializacao-interface.d.ts.map +1 -0
  128. package/fontes/interfaces-tipos/opcoes-serializacao-interface.js +3 -0
  129. package/fontes/interfaces-tipos/opcoes-serializacao-interface.js.map +1 -0
  130. package/fontes/interfaces-tipos/polimorfico-interface.d.ts +32 -0
  131. package/fontes/interfaces-tipos/polimorfico-interface.d.ts.map +1 -0
  132. package/fontes/interfaces-tipos/polimorfico-interface.js +3 -0
  133. package/fontes/interfaces-tipos/polimorfico-interface.js.map +1 -0
  134. package/fontes/interfaces-tipos/relacionamento-interface.d.ts +23 -0
  135. package/fontes/interfaces-tipos/relacionamento-interface.d.ts.map +1 -0
  136. package/fontes/interfaces-tipos/relacionamento-interface.js +3 -0
  137. package/fontes/interfaces-tipos/relacionamento-interface.js.map +1 -0
  138. package/fontes/interfaces-tipos/restricao-interface.d.ts +14 -0
  139. package/fontes/interfaces-tipos/restricao-interface.d.ts.map +1 -0
  140. package/fontes/interfaces-tipos/restricao-interface.js +3 -0
  141. package/fontes/interfaces-tipos/restricao-interface.js.map +1 -0
  142. package/fontes/interfaces-tipos/semente-interface.d.ts +7 -0
  143. package/fontes/interfaces-tipos/semente-interface.d.ts.map +1 -0
  144. package/fontes/interfaces-tipos/semente-interface.js +3 -0
  145. package/fontes/interfaces-tipos/semente-interface.js.map +1 -0
  146. package/fontes/interfaces-tipos/tabela-interface.d.ts +12 -0
  147. package/fontes/interfaces-tipos/tabela-interface.d.ts.map +1 -0
  148. package/fontes/interfaces-tipos/tabela-interface.js +3 -0
  149. package/fontes/interfaces-tipos/tabela-interface.js.map +1 -0
  150. package/fontes/interfaces-tipos/transacao-interface.d.ts +35 -0
  151. package/fontes/interfaces-tipos/transacao-interface.d.ts.map +1 -0
  152. package/fontes/interfaces-tipos/transacao-interface.js +3 -0
  153. package/fontes/interfaces-tipos/transacao-interface.js.map +1 -0
  154. package/fontes/migracoes/executor-migracoes.d.ts +14 -0
  155. package/fontes/migracoes/executor-migracoes.d.ts.map +1 -0
  156. package/fontes/migracoes/executor-migracoes.js +177 -0
  157. package/fontes/migracoes/executor-migracoes.js.map +1 -0
  158. package/fontes/migracoes/gerador-migracoes.d.ts +15 -0
  159. package/fontes/migracoes/gerador-migracoes.d.ts.map +1 -0
  160. package/fontes/migracoes/gerador-migracoes.js +108 -0
  161. package/fontes/migracoes/gerador-migracoes.js.map +1 -0
  162. package/fontes/migracoes/migracao.d.ts +35 -0
  163. package/fontes/migracoes/migracao.d.ts.map +1 -0
  164. package/fontes/migracoes/migracao.js +66 -0
  165. package/fontes/migracoes/migracao.js.map +1 -0
  166. package/fontes/migracoes/semeador.d.ts +18 -0
  167. package/fontes/migracoes/semeador.d.ts.map +1 -0
  168. package/fontes/migracoes/semeador.js +109 -0
  169. package/fontes/migracoes/semeador.js.map +1 -0
  170. package/fontes/rastreador-mudancas.d.ts +27 -0
  171. package/fontes/rastreador-mudancas.d.ts.map +1 -0
  172. package/fontes/rastreador-mudancas.js +94 -0
  173. package/fontes/rastreador-mudancas.js.map +1 -0
  174. package/fontes/relacionamento.d.ts +11 -0
  175. package/fontes/relacionamento.d.ts.map +1 -0
  176. package/fontes/relacionamento.js +15 -0
  177. package/fontes/relacionamento.js.map +1 -0
  178. package/fontes/roteador-bancos.d.ts +50 -0
  179. package/fontes/roteador-bancos.d.ts.map +1 -0
  180. package/fontes/roteador-bancos.js +90 -0
  181. package/fontes/roteador-bancos.js.map +1 -0
  182. package/fontes/serializador.d.ts +46 -0
  183. package/fontes/serializador.d.ts.map +1 -0
  184. package/fontes/serializador.js +79 -0
  185. package/fontes/serializador.js.map +1 -0
  186. package/fontes/taquigrafia.d.ts +41 -0
  187. package/fontes/taquigrafia.d.ts.map +1 -0
  188. package/fontes/taquigrafia.js +96 -0
  189. package/fontes/taquigrafia.js.map +1 -0
  190. package/fontes/tipos.d.ts +3 -0
  191. package/fontes/tipos.d.ts.map +1 -0
  192. package/fontes/tipos.js +3 -0
  193. package/fontes/tipos.js.map +1 -0
  194. package/fontes/transacao.d.ts +81 -0
  195. package/fontes/transacao.d.ts.map +1 -0
  196. package/fontes/transacao.js +243 -0
  197. package/fontes/transacao.js.map +1 -0
  198. package/fontes/validacoes/validador.d.ts +19 -0
  199. package/fontes/validacoes/validador.d.ts.map +1 -0
  200. package/fontes/validacoes/validador.js +157 -0
  201. package/fontes/validacoes/validador.js.map +1 -0
  202. package/index.d.ts +36 -0
  203. package/index.d.ts.map +1 -0
  204. package/index.js +59 -0
  205. package/index.js.map +1 -0
  206. 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,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=migracoes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migracoes.d.ts","sourceRoot":"","sources":["../../../fontes/ilc/migracoes.ts"],"names":[],"mappings":""}