@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,82 @@
1
+ import { DescritorTipoClasse, ObjetoDeleguaClasse } from "@designliquido/delegua/interpretador/estruturas";
2
+ import { Classe } from "@designliquido/delegua/declaracoes";
3
+ import { ColunaEValor, Condicao, Criar } from "@designliquido/lincones-js";
4
+ import { TabelaInterface } from "./interfaces-tipos/tabela-interface";
5
+ import { EntidadeInterface } from "./interfaces-tipos/entidade-interface";
6
+ import { RelacionamentoInterface } from "./interfaces-tipos/relacionamento-interface";
7
+ import { MuitoParaMuitoInterface } from "./interfaces-tipos/muito-para-muitos-interface";
8
+ import { PolimorficInterface } from "./interfaces-tipos/polimorfico-interface";
9
+ import { IndiceInterface } from "./interfaces-tipos/indice-interface";
10
+ import { RestricaoInterface } from "./interfaces-tipos/restricao-interface";
11
+ import { ColunaComputadaInterface } from "./interfaces-tipos/coluna-computada-interface";
12
+ /**
13
+ * Classe responsável por intermediar um registro (normalmente um `ObjetoDeleguaClasse`)
14
+ * e interfaces de manipulação de dados. Normalmente usada por objetos do tipo `Colecao`
15
+ * para gerar comandos de alto nível para bibliotecas como `lincones-js`.
16
+ */
17
+ export declare class Entidade implements EntidadeInterface {
18
+ modelo: DescritorTipoClasse;
19
+ nomePropriedadeChavePrimaria: string;
20
+ nomePropriedadesChavesPrimarias: string[];
21
+ indices: IndiceInterface[];
22
+ restricoes: RestricaoInterface[];
23
+ colunasComputadas: ColunaComputadaInterface[];
24
+ muitosParaMuitos: MuitoParaMuitoInterface[];
25
+ polimorficos: PolimorficInterface[];
26
+ nomePropriedadeVersao: string;
27
+ /**
28
+ * Construtor da classe Entidades.
29
+ * @param diretorioAtual O diretório atual.
30
+ * @param caminhoModelos O caminho dos modelos de tabelas.
31
+ * @param tecnologia A tecnologia utilizada.
32
+ */
33
+ constructor(modelo: DescritorTipoClasse | Classe);
34
+ private validarModeloClasse;
35
+ private construirDescritorTipoClasse;
36
+ private validarTipoModelo;
37
+ obterNome(): string;
38
+ possuiCriadoEm(): boolean;
39
+ possuiAtualizadoEm(): boolean;
40
+ obterNomeChavePrimaria(): string;
41
+ obterNomesChavesPrimarias(): string[];
42
+ obterIndices(): IndiceInterface[];
43
+ obterRestricoes(): RestricaoInterface[];
44
+ obterColunasComputadas(): ColunaComputadaInterface[];
45
+ obterMuitosParaMuitos(): MuitoParaMuitoInterface[];
46
+ obterPolimorficos(): PolimorficInterface[];
47
+ obterNomePropriedadeVersao(): string;
48
+ /**
49
+ * Obtém o nome do banco de dados ao qual a entidade pertence.
50
+ * Busca por decorador @banco, senão retorna "padrão".
51
+ */
52
+ obterNomeBancoDados(): string;
53
+ /**
54
+ * Verifica se a entidade possui exclusão lógica (soft delete) habilitada.
55
+ * Busca por propriedade com decorador @exclusaoLogica ou coluna "excluido_em".
56
+ */
57
+ possuiExclusaoLogica(): boolean;
58
+ /**
59
+ * Obtém o nome da coluna de exclusão lógica.
60
+ * Retorna "excluido_em" como padrão.
61
+ */
62
+ obterNomeColunaExclusaoLogica(): string;
63
+ obterRelacionamentos(): RelacionamentoInterface[];
64
+ obterNomesColunas(): string[];
65
+ obterNomesColunasPersistentes(): string[];
66
+ /**
67
+ * Traduz um tipo Delégua para o equivalente em lincones-js.
68
+ * @param tipo O tipo Delégua a ser traduzido.
69
+ * @returns O tipo no formato lincones-js.
70
+ */
71
+ traduzirTipo(tipo: string): string;
72
+ obterValoresDasPropriedades(tabela: TabelaInterface, classe: ObjetoDeleguaClasse): string;
73
+ resolverValoresParaColunas(registro: ObjetoDeleguaClasse, colunas: string[]): any[];
74
+ resolverColunasEValores(registro: ObjetoDeleguaClasse, colunas: string[]): ColunaEValor[];
75
+ gerarComandoCriarTabela(): Criar;
76
+ hidratarRegistro(linha: {
77
+ [coluna: string]: any;
78
+ }): ObjetoDeleguaClasse;
79
+ hidratarRegistros(linhas: any[]): ObjetoDeleguaClasse[];
80
+ resolverCondicaoPorChavePrimaria(registro: ObjetoDeleguaClasse): Condicao;
81
+ }
82
+ //# sourceMappingURL=entidade.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entidade.d.ts","sourceRoot":"","sources":["../../fontes/entidade.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,mBAAmB,EAEnB,mBAAmB,EACtB,MAAM,iDAAiD,CAAC;AACzD,OAAO,EAAE,MAAM,EAAE,MAAM,oCAAoC,CAAC;AAC5D,OAAO,EAAU,YAAY,EAAE,QAAQ,EAAE,KAAK,EAA6B,MAAM,4BAA4B,CAAC;AAG9G,OAAO,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AACtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAC;AAC1E,OAAO,EAAE,uBAAuB,EAAE,MAAM,6CAA6C,CAAC;AACtF,OAAO,EAAE,uBAAuB,EAAE,MAAM,gDAAgD,CAAC;AACzF,OAAO,EAAE,mBAAmB,EAAE,MAAM,0CAA0C,CAAC;AAC/E,OAAO,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AACtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,wCAAwC,CAAC;AAC5E,OAAO,EAAE,wBAAwB,EAAE,MAAM,+CAA+C,CAAC;AAGzF;;;;GAIG;AACH,qBAAa,QAAS,YAAW,iBAAiB;IAC9C,MAAM,EAAE,mBAAmB,CAAC;IAC5B,4BAA4B,EAAE,MAAM,CAAC;IACrC,+BAA+B,EAAE,MAAM,EAAE,CAAM;IAC/C,OAAO,EAAE,eAAe,EAAE,CAAM;IAChC,UAAU,EAAE,kBAAkB,EAAE,CAAM;IACtC,iBAAiB,EAAE,wBAAwB,EAAE,CAAM;IACnD,gBAAgB,EAAE,uBAAuB,EAAE,CAAM;IACjD,YAAY,EAAE,mBAAmB,EAAE,CAAM;IACzC,qBAAqB,EAAE,MAAM,CAAC;IAE9B;;;;;OAKG;gBACS,MAAM,EAAE,mBAAmB,GAAG,MAAM;IAYhD,OAAO,CAAC,mBAAmB;IA6G3B,OAAO,CAAC,4BAA4B;IA0BpC,OAAO,CAAC,iBAAiB;IA6GzB,SAAS,IAAI,MAAM;IAInB,cAAc,IAAI,OAAO;IAIzB,kBAAkB,IAAI,OAAO;IAI7B,sBAAsB,IAAI,MAAM;IAIhC,yBAAyB,IAAI,MAAM,EAAE;IAMrC,YAAY,IAAI,eAAe,EAAE;IAIjC,eAAe,IAAI,kBAAkB,EAAE;IAIvC,sBAAsB,IAAI,wBAAwB,EAAE;IAIpD,qBAAqB,IAAI,uBAAuB,EAAE;IAIlD,iBAAiB,IAAI,mBAAmB,EAAE;IAI1C,0BAA0B,IAAI,MAAM;IAIpC;;;OAGG;IACH,mBAAmB,IAAI,MAAM;IAe7B;;;OAGG;IACH,oBAAoB,IAAI,OAAO;IAe/B;;;OAGG;IACH,6BAA6B,IAAI,MAAM;IAkBvC,oBAAoB,IAAI,uBAAuB,EAAE;IAwCjD,iBAAiB,IAAI,MAAM,EAAE;IAS7B,6BAA6B,IAAI,MAAM,EAAE;IAKzC;;;;OAIG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAuBlC,2BAA2B,CACvB,MAAM,EAAE,eAAe,EACvB,MAAM,EAAE,mBAAmB,GAC5B,MAAM;IAWT,0BAA0B,CAAC,QAAQ,EAAE,mBAAmB,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,GAAG,EAAE;IAkBnF,uBAAuB,CAAC,QAAQ,EAAE,mBAAmB,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,YAAY,EAAE;IAuBzF,uBAAuB,IAAI,KAAK;IAgBhC,gBAAgB,CAAC,KAAK,EAAE;QAAE,CAAC,MAAM,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,GAAG,mBAAmB;IAWvE,iBAAiB,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,mBAAmB,EAAE;IAIvD,gCAAgC,CAAC,QAAQ,EAAE,mBAAmB,GAAG,QAAQ;CAyB5E"}
@@ -0,0 +1,467 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Entidade = void 0;
4
+ const estruturas_1 = require("@designliquido/delegua/interpretador/estruturas");
5
+ const declaracoes_1 = require("@designliquido/delegua/declaracoes");
6
+ const lincones_js_1 = require("@designliquido/lincones-js");
7
+ const relacionamento_1 = require("./relacionamento");
8
+ /**
9
+ * Classe responsável por intermediar um registro (normalmente um `ObjetoDeleguaClasse`)
10
+ * e interfaces de manipulação de dados. Normalmente usada por objetos do tipo `Colecao`
11
+ * para gerar comandos de alto nível para bibliotecas como `lincones-js`.
12
+ */
13
+ class Entidade {
14
+ /**
15
+ * Construtor da classe Entidades.
16
+ * @param diretorioAtual O diretório atual.
17
+ * @param caminhoModelos O caminho dos modelos de tabelas.
18
+ * @param tecnologia A tecnologia utilizada.
19
+ */
20
+ constructor(modelo) {
21
+ this.nomePropriedadesChavesPrimarias = [];
22
+ this.indices = [];
23
+ this.restricoes = [];
24
+ this.colunasComputadas = [];
25
+ this.muitosParaMuitos = [];
26
+ this.polimorficos = [];
27
+ if (modelo instanceof estruturas_1.DescritorTipoClasse) {
28
+ this.validarTipoModelo(modelo);
29
+ this.modelo = modelo;
30
+ }
31
+ if (modelo instanceof declaracoes_1.Classe) {
32
+ const descritorClasse = this.validarModeloClasse(modelo);
33
+ this.modelo = descritorClasse;
34
+ }
35
+ }
36
+ validarModeloClasse(modelo) {
37
+ // Validações:
38
+ // Deve ter uma propriedade chamada `id` ou então pelo menos uma propriedade que tenha um
39
+ // decorador @chave.
40
+ for (const propriedade of modelo.propriedades) {
41
+ if (propriedade.nome.lexema === "id") {
42
+ this.nomePropriedadeChavePrimaria = "id";
43
+ this.nomePropriedadesChavesPrimarias.push("id");
44
+ }
45
+ for (const decorador of propriedade.decoradores) {
46
+ if (decorador.nome === "@chave") {
47
+ this.nomePropriedadeChavePrimaria = propriedade.nome.lexema;
48
+ this.nomePropriedadesChavesPrimarias.push(propriedade.nome.lexema);
49
+ }
50
+ // Detectar índices
51
+ if (decorador.nome === "@indice" || decorador.nome === "@indiceUnico") {
52
+ const eUnico = decorador.nome === "@indiceUnico";
53
+ const nomeIndice = decorador.atributos?.nome || `idx_${propriedade.nome.lexema}`;
54
+ this.indices.push({
55
+ nome: nomeIndice,
56
+ colunas: [propriedade.nome.lexema],
57
+ unico: eUnico
58
+ });
59
+ }
60
+ // Detectar restrições
61
+ if (decorador.nome === "@restricao") {
62
+ this.restricoes.push({
63
+ nome: decorador.atributos?.nome || `constr_${propriedade.nome.lexema}`,
64
+ sql: decorador.atributos?.sql || decorador.atributos?.restricao || '',
65
+ tipo: 'CHECK'
66
+ });
67
+ }
68
+ // Detectar colunas computadas
69
+ if (decorador.nome === "@computada") {
70
+ const expressao = decorador.atributos?.expressao || decorador.atributos?.sql;
71
+ if (!expressao) {
72
+ throw new Error(`Coluna computada '${propriedade.nome.lexema}' precisa de expressao.`);
73
+ }
74
+ this.colunasComputadas.push({
75
+ nome: propriedade.nome.lexema,
76
+ tipo: this.traduzirTipo(propriedade.tipo || "texto"),
77
+ expressao: expressao,
78
+ persistida: decorador.atributos?.persistida
79
+ });
80
+ }
81
+ // Detectar relacionamentos muitos-para-muitos
82
+ if (decorador.nome === "@temMuitosParaMuitos") {
83
+ const entidadeDestino = decorador.atributos?.entidade;
84
+ if (!entidadeDestino)
85
+ continue;
86
+ const nomeEntidade = modelo.simbolo.lexema;
87
+ const nomeEntidadeDestino = entidadeDestino;
88
+ const tabelaIntermediaria = decorador.atributos?.tabelaIntermediaria ||
89
+ `${nomeEntidade.toLowerCase()}_${nomeEntidadeDestino.toLowerCase()}`;
90
+ this.muitosParaMuitos.push({
91
+ tipo: 'muitoParaMuitos',
92
+ nomePropriedade: propriedade.nome.lexema,
93
+ entidadeDestino: entidadeDestino,
94
+ tabelaIntermediaria: tabelaIntermediaria,
95
+ colunaOrigem: decorador.atributos?.colunaOrigem || `${nomeEntidade.toLowerCase()}_id`,
96
+ colunaDestino: decorador.atributos?.colunaDestino || `${nomeEntidadeDestino.toLowerCase()}_id`,
97
+ deletarAoRemover: decorador.atributos?.deletarAoRemover ?? false
98
+ });
99
+ }
100
+ // Detectar relacionamentos polimórficos
101
+ if (decorador.nome === "@polimorfico") {
102
+ const entidadesPossiveis = decorador.atributos?.entidades || [];
103
+ this.polimorficos.push({
104
+ tipo: 'polimorfico',
105
+ nomePropriedade: propriedade.nome.lexema,
106
+ colunaTipo: decorador.atributos?.colunaTipo || `${propriedade.nome.lexema}_tipo`,
107
+ colunaId: decorador.atributos?.colunaId || `${propriedade.nome.lexema}_id`,
108
+ entidadesPossiveis: entidadesPossiveis,
109
+ deletarAoRemover: decorador.atributos?.deletarAoRemover ?? false
110
+ });
111
+ }
112
+ // Detectar campo de versão para concorrência otimista (decorador)
113
+ if (decorador.nome === "@versao") {
114
+ this.nomePropriedadeVersao = propriedade.nome.lexema;
115
+ }
116
+ }
117
+ // Detectar campo de versão para concorrência otimista (por convenção de nome)
118
+ if (propriedade.nome.lexema === "versao") {
119
+ this.nomePropriedadeVersao = propriedade.nome.lexema;
120
+ }
121
+ }
122
+ if (!this.nomePropriedadeChavePrimaria) {
123
+ throw new Error("Modelo não possui uma chave primária definida. " +
124
+ "Para definir uma chave primária, você pode ou declarar uma propriedade `id` com o tipo `número`, " +
125
+ "ou declarar uma propriedade com o tipo número e decorá-la com `@chave`.");
126
+ }
127
+ return this.construirDescritorTipoClasse(modelo);
128
+ }
129
+ construirDescritorTipoClasse(modelo) {
130
+ const metodos = {};
131
+ const definirMetodos = modelo.metodos;
132
+ for (let i = 0; i < modelo.metodos.length; i++) {
133
+ const metodoAtual = definirMetodos[i];
134
+ const eInicializador = metodoAtual.simbolo.lexema === "construtor";
135
+ const funcao = new estruturas_1.DeleguaFuncao(metodoAtual.simbolo.lexema, metodoAtual.funcao, undefined, eInicializador);
136
+ metodos[metodoAtual.simbolo.lexema] = funcao;
137
+ }
138
+ const descritorTipoClasse = new estruturas_1.DescritorTipoClasse(modelo.simbolo, undefined, // Por enquanto não teremos herança.
139
+ metodos, modelo.propriedades);
140
+ return descritorTipoClasse;
141
+ }
142
+ validarTipoModelo(modelo) {
143
+ // Validações:
144
+ // Deve ter uma propriedade chamada `id` ou então pelo menos uma propriedade que tenha um
145
+ // decorador @chave.
146
+ for (const propriedade of modelo.propriedades) {
147
+ if (propriedade.nome.lexema === "id") {
148
+ this.nomePropriedadeChavePrimaria = "id";
149
+ this.nomePropriedadesChavesPrimarias.push("id");
150
+ }
151
+ for (const decorador of propriedade.decoradores) {
152
+ if (decorador.nome === "chave") {
153
+ this.nomePropriedadeChavePrimaria = propriedade.nome.lexema;
154
+ this.nomePropriedadesChavesPrimarias.push(propriedade.nome.lexema);
155
+ }
156
+ // Detectar índices
157
+ if (decorador.nome === "indice" || decorador.nome === "indiceUnico") {
158
+ const eUnico = decorador.nome === "indiceUnico";
159
+ const nomeIndice = decorador.atributos?.nome || `idx_${propriedade.nome.lexema}`;
160
+ this.indices.push({
161
+ nome: nomeIndice,
162
+ colunas: [propriedade.nome.lexema],
163
+ unico: eUnico,
164
+ tipo: decorador.atributos?.tipo
165
+ });
166
+ }
167
+ // Detectar restrições
168
+ if (decorador.nome === "restricao") {
169
+ this.restricoes.push({
170
+ nome: decorador.atributos?.nome || `constr_${propriedade.nome.lexema}`,
171
+ sql: decorador.atributos?.sql || decorador.atributos?.restricao || '',
172
+ tipo: 'CHECK'
173
+ });
174
+ }
175
+ // Detectar colunas computadas
176
+ if (decorador.nome === "computada") {
177
+ const expressao = decorador.atributos?.expressao || decorador.atributos?.sql;
178
+ if (!expressao) {
179
+ throw new Error(`Coluna computada '${propriedade.nome.lexema}' precisa de expressao.`);
180
+ }
181
+ this.colunasComputadas.push({
182
+ nome: propriedade.nome.lexema,
183
+ tipo: this.traduzirTipo(propriedade.tipo || "texto"),
184
+ expressao: expressao,
185
+ persistida: decorador.atributos?.persistida
186
+ });
187
+ }
188
+ // Detectar relacionamentos muitos-para-muitos
189
+ if (decorador.nome === "temMuitosParaMuitos") {
190
+ const entidadeDestino = decorador.atributos?.entidade;
191
+ if (!entidadeDestino)
192
+ continue;
193
+ const nomeEntidade = modelo.simboloOriginal.lexema;
194
+ const nomeEntidadeDestino = entidadeDestino;
195
+ const tabelaIntermediaria = decorador.atributos?.tabelaIntermediaria ||
196
+ `${nomeEntidade.toLowerCase()}_${nomeEntidadeDestino.toLowerCase()}`;
197
+ this.muitosParaMuitos.push({
198
+ tipo: 'muitoParaMuitos',
199
+ nomePropriedade: propriedade.nome.lexema,
200
+ entidadeDestino: entidadeDestino,
201
+ tabelaIntermediaria: tabelaIntermediaria,
202
+ colunaOrigem: decorador.atributos?.colunaOrigem || `${nomeEntidade.toLowerCase()}_id`,
203
+ colunaDestino: decorador.atributos?.colunaDestino || `${nomeEntidadeDestino.toLowerCase()}_id`,
204
+ deletarAoRemover: decorador.atributos?.deletarAoRemover ?? false
205
+ });
206
+ }
207
+ // Detectar relacionamentos polimórficos
208
+ if (decorador.nome === "polimorfico") {
209
+ const entidadesPossiveis = decorador.atributos?.entidades || [];
210
+ this.polimorficos.push({
211
+ tipo: 'polimorfico',
212
+ nomePropriedade: propriedade.nome.lexema,
213
+ colunaTipo: decorador.atributos?.colunaTipo || `${propriedade.nome.lexema}_tipo`,
214
+ colunaId: decorador.atributos?.colunaId || `${propriedade.nome.lexema}_id`,
215
+ entidadesPossiveis: entidadesPossiveis,
216
+ deletarAoRemover: decorador.atributos?.deletarAoRemover ?? false
217
+ });
218
+ }
219
+ // Detectar campo de versão para concorrência otimista (decorador)
220
+ if (decorador.nome === "versao") {
221
+ this.nomePropriedadeVersao = propriedade.nome.lexema;
222
+ }
223
+ }
224
+ // Detectar campo de versão para concorrência otimista (por convenção de nome)
225
+ if (propriedade.nome.lexema === "versao") {
226
+ this.nomePropriedadeVersao = propriedade.nome.lexema;
227
+ }
228
+ }
229
+ // Se nenhuma chave primária foi encontrada, lançar erro
230
+ if (!this.nomePropriedadeChavePrimaria) {
231
+ throw new Error("Modelo não possui uma chave primária definida. " +
232
+ "Para definir uma chave primária, você pode ou declarar uma propriedade `id` com o tipo `número`, " +
233
+ "ou declarar uma propriedade com o tipo número e decorá-la com `@chave`.");
234
+ }
235
+ }
236
+ obterNome() {
237
+ return this.modelo.simboloOriginal.lexema;
238
+ }
239
+ possuiCriadoEm() {
240
+ return this.modelo.propriedades.some(p => p.nome.lexema === 'criado_em');
241
+ }
242
+ possuiAtualizadoEm() {
243
+ return this.modelo.propriedades.some(p => p.nome.lexema === 'atualizado_em');
244
+ }
245
+ obterNomeChavePrimaria() {
246
+ return this.nomePropriedadeChavePrimaria;
247
+ }
248
+ obterNomesChavesPrimarias() {
249
+ return this.nomePropriedadesChavesPrimarias.length > 0
250
+ ? this.nomePropriedadesChavesPrimarias
251
+ : [this.nomePropriedadeChavePrimaria];
252
+ }
253
+ obterIndices() {
254
+ return this.indices;
255
+ }
256
+ obterRestricoes() {
257
+ return this.restricoes;
258
+ }
259
+ obterColunasComputadas() {
260
+ return this.colunasComputadas;
261
+ }
262
+ obterMuitosParaMuitos() {
263
+ return this.muitosParaMuitos;
264
+ }
265
+ obterPolimorficos() {
266
+ return this.polimorficos;
267
+ }
268
+ obterNomePropriedadeVersao() {
269
+ return this.nomePropriedadeVersao || "";
270
+ }
271
+ /**
272
+ * Obtém o nome do banco de dados ao qual a entidade pertence.
273
+ * Busca por decorador @banco, senão retorna "padrão".
274
+ */
275
+ obterNomeBancoDados() {
276
+ for (const propriedade of this.modelo.propriedades) {
277
+ for (const decorador of propriedade.decoradores) {
278
+ const nomeDecorador = decorador.nome.replace(/^@/, '');
279
+ if (nomeDecorador === 'banco') {
280
+ return decorador.atributos?.nome || 'padrão';
281
+ }
282
+ }
283
+ }
284
+ // Se nenhum decorador @banco foi encontrado, verificar em uma localização padrão
285
+ // (idealmente seria no nível da classe, mas estamos limitados às propriedades)
286
+ return 'padrão';
287
+ }
288
+ /**
289
+ * Verifica se a entidade possui exclusão lógica (soft delete) habilitada.
290
+ * Busca por propriedade com decorador @exclusaoLogica ou coluna "excluido_em".
291
+ */
292
+ possuiExclusaoLogica() {
293
+ // Procurar por decorador @exclusaoLogica
294
+ for (const propriedade of this.modelo.propriedades) {
295
+ for (const decorador of propriedade.decoradores) {
296
+ const nomeDecorador = decorador.nome.replace(/^@/, '');
297
+ if (nomeDecorador === 'exclusaoLogica') {
298
+ return true;
299
+ }
300
+ }
301
+ }
302
+ // Procurar por coluna "excluido_em"
303
+ return this.modelo.propriedades.some(p => p.nome.lexema === 'excluido_em');
304
+ }
305
+ /**
306
+ * Obtém o nome da coluna de exclusão lógica.
307
+ * Retorna "excluido_em" como padrão.
308
+ */
309
+ obterNomeColunaExclusaoLogica() {
310
+ for (const propriedade of this.modelo.propriedades) {
311
+ for (const decorador of propriedade.decoradores) {
312
+ const nomeDecorador = decorador.nome.replace(/^@/, '');
313
+ if (nomeDecorador === 'exclusaoLogica') {
314
+ return decorador.atributos?.coluna || 'excluido_em';
315
+ }
316
+ }
317
+ }
318
+ // Se houver uma propriedade "excluido_em", usá-la
319
+ if (this.modelo.propriedades.some(p => p.nome.lexema === 'excluido_em')) {
320
+ return 'excluido_em';
321
+ }
322
+ return 'excluido_em';
323
+ }
324
+ obterRelacionamentos() {
325
+ const relacionamentos = [];
326
+ const nomeEntidade = this.obterNome();
327
+ for (const propriedade of this.modelo.propriedades) {
328
+ for (const decorador of propriedade.decoradores) {
329
+ const nomeDecorador = decorador.nome.replace(/^@/, '');
330
+ if (nomeDecorador === 'temUm' || nomeDecorador === 'temMuitos' || nomeDecorador === 'pertenceA') {
331
+ const entidadeDestino = decorador.atributos?.entidade;
332
+ if (!entidadeDestino)
333
+ continue;
334
+ let colunaOrigem;
335
+ let colunaDestino;
336
+ if (nomeDecorador === 'pertenceA') {
337
+ colunaOrigem = decorador.atributos?.chaveEstrangeira || `${entidadeDestino.toLowerCase()}_id`;
338
+ colunaDestino = 'id';
339
+ }
340
+ else {
341
+ colunaOrigem = 'id';
342
+ colunaDestino = decorador.atributos?.chaveEstrangeira || `${nomeEntidade.toLowerCase()}_id`;
343
+ }
344
+ const cascata = decorador.atributos?.cascata;
345
+ relacionamentos.push(new relacionamento_1.Relacionamento(nomeDecorador, propriedade.nome.lexema, entidadeDestino, colunaOrigem, colunaDestino, cascata));
346
+ }
347
+ }
348
+ }
349
+ return relacionamentos;
350
+ }
351
+ obterNomesColunas() {
352
+ let nomesColunas = [];
353
+ for (let propriedade of this.modelo.propriedades) {
354
+ nomesColunas.push(propriedade.nome.lexema);
355
+ }
356
+ return nomesColunas;
357
+ }
358
+ obterNomesColunasPersistentes() {
359
+ const nomesComputadas = new Set(this.colunasComputadas.map((c) => c.nome));
360
+ return this.obterNomesColunas().filter((nome) => !nomesComputadas.has(nome));
361
+ }
362
+ /**
363
+ * Traduz um tipo Delégua para o equivalente em lincones-js.
364
+ * @param tipo O tipo Delégua a ser traduzido.
365
+ * @returns O tipo no formato lincones-js.
366
+ */
367
+ traduzirTipo(tipo) {
368
+ switch (tipo) {
369
+ case "numero":
370
+ case "número":
371
+ case "inteiro":
372
+ case "longo":
373
+ return "INTEIRO";
374
+ case "decimal":
375
+ return "NUMERO";
376
+ case "texto":
377
+ return "TEXTO";
378
+ case "caracteres":
379
+ return "CARACTERES";
380
+ case "logico":
381
+ case "lógico":
382
+ return "LOGICO";
383
+ default:
384
+ throw new Error(`EntidadesError: O tipo: ${tipo} não é válido.`);
385
+ }
386
+ }
387
+ obterValoresDasPropriedades(tabela, classe) {
388
+ return tabela.atributos
389
+ .map((atributo) => {
390
+ const propriedade = Object.entries(classe.propriedades).find(([key, value]) => key === atributo.nome);
391
+ return propriedade ? propriedade[1] : null;
392
+ })
393
+ .join(", ");
394
+ }
395
+ resolverValoresParaColunas(registro, colunas) {
396
+ const valores = [];
397
+ const nomesComputadas = new Set(this.colunasComputadas.map((c) => c.nome));
398
+ for (const coluna of colunas) {
399
+ if (!this.modelo.propriedades.some(p => p.nome.lexema === coluna)) {
400
+ throw new Error(`Coluna ${coluna} não existe em entidade ${this.modelo.simboloOriginal.lexema}.`);
401
+ }
402
+ if (nomesComputadas.has(coluna)) {
403
+ throw new Error(`Coluna computada ${coluna} nao pode receber valor manual.`);
404
+ }
405
+ valores.push(registro.propriedades[coluna]);
406
+ }
407
+ return valores;
408
+ }
409
+ resolverColunasEValores(registro, colunas) {
410
+ const colunasEValores = [];
411
+ const nomesComputadas = new Set(this.colunasComputadas.map((c) => c.nome));
412
+ for (const coluna of colunas) {
413
+ if (!this.modelo.propriedades.some(p => p.nome.lexema === coluna)) {
414
+ throw new Error(`Coluna ${coluna} não existe em entidade ${this.modelo.simboloOriginal.lexema}.`);
415
+ }
416
+ if (nomesComputadas.has(coluna)) {
417
+ throw new Error(`Coluna computada ${coluna} nao pode ser atualizada.`);
418
+ }
419
+ colunasEValores.push(new lincones_js_1.ColunaEValor(new lincones_js_1.ReferenciaColuna(coluna), new lincones_js_1.Literal(registro.propriedades[coluna])));
420
+ }
421
+ return colunasEValores;
422
+ }
423
+ gerarComandoCriarTabela() {
424
+ const colunas = [];
425
+ const nomesComputadas = new Set(this.colunasComputadas.map((c) => c.nome));
426
+ for (const propriedade of this.modelo.propriedades) {
427
+ const nome = propriedade.nome.lexema;
428
+ if (nomesComputadas.has(nome)) {
429
+ continue;
430
+ }
431
+ const tipo = propriedade.tipo ? this.traduzirTipo(propriedade.tipo) : "TEXTO";
432
+ const chavePrimaria = nome === this.nomePropriedadeChavePrimaria;
433
+ colunas.push(new lincones_js_1.Coluna(nome, tipo, undefined, !chavePrimaria, chavePrimaria, false, chavePrimaria));
434
+ }
435
+ return new lincones_js_1.Criar(-1, this.obterNome(), colunas, true);
436
+ }
437
+ hidratarRegistro(linha) {
438
+ const objeto = new estruturas_1.ObjetoDeleguaClasse(this.modelo);
439
+ for (const propriedade of this.modelo.propriedades) {
440
+ const nome = propriedade.nome.lexema;
441
+ if (nome in linha) {
442
+ objeto.propriedades[nome] = linha[nome];
443
+ }
444
+ }
445
+ return objeto;
446
+ }
447
+ hidratarRegistros(linhas) {
448
+ return linhas.map(linha => this.hidratarRegistro(linha));
449
+ }
450
+ resolverCondicaoPorChavePrimaria(registro) {
451
+ const chaves = this.obterNomesChavesPrimarias();
452
+ // Se houver apenas uma chave primária, usar o formato antigo
453
+ if (chaves.length === 1) {
454
+ const chave = chaves[0];
455
+ const valor = registro.propriedades[chave];
456
+ return new lincones_js_1.Condicao(new lincones_js_1.ReferenciaColuna(chave), 'IGUAL', new lincones_js_1.Literal(valor, typeof valor === 'number' ? "INTEIRO" : "TEXTO"));
457
+ }
458
+ // Para chaves compostas, criar múltiplas condições (serão unidas com AND)
459
+ // Para compatibilidade, retornamos a primeira condição aqui
460
+ // e as demais serão adicionadas pela camada de Colecao
461
+ const chave = chaves[0];
462
+ const valor = registro.propriedades[chave];
463
+ return new lincones_js_1.Condicao(new lincones_js_1.ReferenciaColuna(chave), 'IGUAL', new lincones_js_1.Literal(valor, typeof valor === 'number' ? "INTEIRO" : "TEXTO"));
464
+ }
465
+ }
466
+ exports.Entidade = Entidade;
467
+ //# sourceMappingURL=entidade.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entidade.js","sourceRoot":"","sources":["../../fontes/entidade.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Erro lançado quando uma operação de atualização falha
3
+ * devido a um conflito de concorrência otimista.
4
+ *
5
+ * Indica que a versão do registro foi modificada por outro
6
+ * processo desde a última leitura.
7
+ */
8
+ export declare class ErroConcorrencia extends Error {
9
+ constructor(mensagem?: string);
10
+ }
11
+ //# sourceMappingURL=erro-concorrencia.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"erro-concorrencia.d.ts","sourceRoot":"","sources":["../../../fontes/erros/erro-concorrencia.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,qBAAa,gBAAiB,SAAQ,KAAK;gBAEnC,QAAQ,GAAE,MAAkF;CAKnG"}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ErroConcorrencia = void 0;
4
+ /**
5
+ * Erro lançado quando uma operação de atualização falha
6
+ * devido a um conflito de concorrência otimista.
7
+ *
8
+ * Indica que a versão do registro foi modificada por outro
9
+ * processo desde a última leitura.
10
+ */
11
+ class ErroConcorrencia extends Error {
12
+ constructor(mensagem = 'Conflito de concorrência: o registro foi modificado por outro processo.') {
13
+ super(mensagem);
14
+ this.name = 'ErroConcorrencia';
15
+ }
16
+ }
17
+ exports.ErroConcorrencia = ErroConcorrencia;
18
+ //# sourceMappingURL=erro-concorrencia.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"erro-concorrencia.js","sourceRoot":"","sources":["../../../fontes/erros/erro-concorrencia.ts"],"names":[],"mappings":";;;AAAA;;;;;;GAMG;AACH,MAAa,gBAAiB,SAAQ,KAAK;IACvC,YACI,WAAmB,yEAAyE;QAE5F,KAAK,CAAC,QAAQ,CAAC,CAAC;QAChB,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;IACnC,CAAC;CACJ;AAPD,4CAOC"}
@@ -0,0 +1,4 @@
1
+ export declare class ErroTabelaNaoEncontrada extends Error {
2
+ constructor(nomeTabela: string);
3
+ }
4
+ //# sourceMappingURL=erro-tabela-nao-encontrada.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"erro-tabela-nao-encontrada.d.ts","sourceRoot":"","sources":["../../../fontes/erros/erro-tabela-nao-encontrada.ts"],"names":[],"mappings":"AAAA,qBAAa,uBAAwB,SAAQ,KAAK;gBAClC,UAAU,EAAE,MAAM;CAIjC"}
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ErroTabelaNaoEncontrada = void 0;
4
+ class ErroTabelaNaoEncontrada extends Error {
5
+ constructor(nomeTabela) {
6
+ super(`Tabela '${nomeTabela}' não encontrada ou não existe.`);
7
+ this.name = 'ErroTabelaNaoEncontrada';
8
+ }
9
+ }
10
+ exports.ErroTabelaNaoEncontrada = ErroTabelaNaoEncontrada;
11
+ //# sourceMappingURL=erro-tabela-nao-encontrada.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"erro-tabela-nao-encontrada.js","sourceRoot":"","sources":["../../../fontes/erros/erro-tabela-nao-encontrada.ts"],"names":[],"mappings":";;;AAAA,MAAa,uBAAwB,SAAQ,KAAK;IAC9C,YAAY,UAAkB;QAC1B,KAAK,CAAC,WAAW,UAAU,iCAAiC,CAAC,CAAC;QAC9D,IAAI,CAAC,IAAI,GAAG,yBAAyB,CAAC;IAC1C,CAAC;CACJ;AALD,0DAKC"}