@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,79 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Serializador = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Classe responsável pela serialização de registros para JSON e dicionários.
|
|
6
|
+
* Fornece controle granular sobre quais campos incluir e como serializar relacionamentos.
|
|
7
|
+
*/
|
|
8
|
+
class Serializador {
|
|
9
|
+
/**
|
|
10
|
+
* Converte um registro de entidade para dicionário (objeto JavaScript).
|
|
11
|
+
* @param registro Registro a serializar
|
|
12
|
+
* @param tipoEntidade Tipo da entidade
|
|
13
|
+
* @param opcoes Opções de serialização
|
|
14
|
+
* @returns Objeto JavaScript com os dados do registro
|
|
15
|
+
*/
|
|
16
|
+
static paraDicionario(registro, tipoEntidade, opcoes = {}) {
|
|
17
|
+
const dicionario = {};
|
|
18
|
+
const profundidade = opcoes.profundidade ?? 1;
|
|
19
|
+
for (const propriedade of tipoEntidade.modelo.propriedades) {
|
|
20
|
+
const nomeCampo = propriedade.nome.lexema;
|
|
21
|
+
if (!this._deveIncluirCampo(nomeCampo, opcoes)) {
|
|
22
|
+
continue;
|
|
23
|
+
}
|
|
24
|
+
const valor = registro.propriedades[nomeCampo];
|
|
25
|
+
if (valor === null || valor === undefined) {
|
|
26
|
+
dicionario[nomeCampo] = valor;
|
|
27
|
+
continue;
|
|
28
|
+
}
|
|
29
|
+
dicionario[nomeCampo] = valor;
|
|
30
|
+
}
|
|
31
|
+
return dicionario;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Converte um registro de entidade para string JSON.
|
|
35
|
+
* @param registro Registro a serializar
|
|
36
|
+
* @param tipoEntidade Tipo da entidade
|
|
37
|
+
* @param opcoes Opções de serialização
|
|
38
|
+
* @returns String JSON com os dados do registro
|
|
39
|
+
*/
|
|
40
|
+
static paraJson(registro, tipoEntidade, opcoes = {}) {
|
|
41
|
+
const dicionario = this.paraDicionario(registro, tipoEntidade, opcoes);
|
|
42
|
+
return JSON.stringify(dicionario);
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Converte múltiplos registros para array de dicionários.
|
|
46
|
+
* @param registros Registros a serializar
|
|
47
|
+
* @param tipoEntidade Tipo da entidade
|
|
48
|
+
* @param opcoes Opções de serialização
|
|
49
|
+
* @returns Array de dicionários
|
|
50
|
+
*/
|
|
51
|
+
static muitosParaDicionario(registros, tipoEntidade, opcoes = {}) {
|
|
52
|
+
return registros.map(registro => this.paraDicionario(registro, tipoEntidade, opcoes));
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Converte múltiplos registros para string JSON com array.
|
|
56
|
+
* @param registros Registros a serializar
|
|
57
|
+
* @param tipoEntidade Tipo da entidade
|
|
58
|
+
* @param opcoes Opções de serialização
|
|
59
|
+
* @returns String JSON com array de registros
|
|
60
|
+
*/
|
|
61
|
+
static muitosParaJson(registros, tipoEntidade, opcoes = {}) {
|
|
62
|
+
const dicionarios = this.muitosParaDicionario(registros, tipoEntidade, opcoes);
|
|
63
|
+
return JSON.stringify(dicionarios);
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Verifica se um campo deve ser incluído na serialização.
|
|
67
|
+
*/
|
|
68
|
+
static _deveIncluirCampo(nomeCampo, opcoes) {
|
|
69
|
+
if (opcoes.excluir && opcoes.excluir.includes(nomeCampo)) {
|
|
70
|
+
return false;
|
|
71
|
+
}
|
|
72
|
+
if (opcoes.incluir && !opcoes.incluir.includes(nomeCampo)) {
|
|
73
|
+
return false;
|
|
74
|
+
}
|
|
75
|
+
return true;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
exports.Serializador = Serializador;
|
|
79
|
+
//# sourceMappingURL=serializador.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"serializador.js","sourceRoot":"","sources":["../../fontes/serializador.ts"],"names":[],"mappings":";;;AAIA;;;GAGG;AACH,MAAa,YAAY;IACrB;;;;;;OAMG;IACH,MAAM,CAAC,cAAc,CACjB,QAA6B,EAC7B,YAA+B,EAC/B,SAAsC,EAAE;QAExC,MAAM,UAAU,GAAwB,EAAE,CAAC;QAC3C,MAAM,YAAY,GAAG,MAAM,CAAC,YAAY,IAAI,CAAC,CAAC;QAE9C,KAAK,MAAM,WAAW,IAAI,YAAY,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;YACzD,MAAM,SAAS,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC;YAE1C,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE,CAAC;gBAC7C,SAAS;YACb,CAAC;YAED,MAAM,KAAK,GAAG,QAAQ,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YAE/C,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACxC,UAAU,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC;gBAC9B,SAAS;YACb,CAAC;YAED,UAAU,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC;QAClC,CAAC;QAED,OAAO,UAAU,CAAC;IACtB,CAAC;IAED;;;;;;OAMG;IACH,MAAM,CAAC,QAAQ,CACX,QAA6B,EAC7B,YAA+B,EAC/B,SAAsC,EAAE;QAExC,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;QACvE,OAAO,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IACtC,CAAC;IAED;;;;;;OAMG;IACH,MAAM,CAAC,oBAAoB,CACvB,SAAgC,EAChC,YAA+B,EAC/B,SAAsC,EAAE;QAExC,OAAO,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC;IAC1F,CAAC;IAED;;;;;;OAMG;IACH,MAAM,CAAC,cAAc,CACjB,SAAgC,EAChC,YAA+B,EAC/B,SAAsC,EAAE;QAExC,MAAM,WAAW,GAAG,IAAI,CAAC,oBAAoB,CAAC,SAAS,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;QAC/E,OAAO,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IACvC,CAAC;IAED;;OAEG;IACK,MAAM,CAAC,iBAAiB,CAC5B,SAAiB,EACjB,MAAmC;QAEnC,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;YACvD,OAAO,KAAK,CAAC;QACjB,CAAC;QAED,IAAI,MAAM,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;YACxD,OAAO,KAAK,CAAC;QACjB,CAAC;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ;AApGD,oCAoGC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { DetectorConsultasN1, type AnaliseN1 } from './detector-n-mais-um';
|
|
2
|
+
import type { FuncaoTaquigrafia, NivelDetalhamentoTaquigrafia } from './tipos';
|
|
3
|
+
export type { FuncaoTaquigrafia, NivelDetalhamentoTaquigrafia } from './tipos';
|
|
4
|
+
/**
|
|
5
|
+
* Taquígrafo, conhecido em inglês como _"shorthand logger"_, é um serviço simples
|
|
6
|
+
* e eficiente para a anotação de diferentes operações, com suporte a níveis
|
|
7
|
+
* de detalhamento e mensagens estruturadas. Inclui detecção de padrão N+1.
|
|
8
|
+
*/
|
|
9
|
+
export declare class Taquigrafo {
|
|
10
|
+
nivel: NivelDetalhamentoTaquigrafia;
|
|
11
|
+
funcaoTaquigrafia: FuncaoTaquigrafia;
|
|
12
|
+
private detectorN1;
|
|
13
|
+
private habilitarDeteccaoN1;
|
|
14
|
+
constructor(nivel?: NivelDetalhamentoTaquigrafia, funcaoTaquigrafia?: FuncaoTaquigrafia);
|
|
15
|
+
private deveRegistrarOperacao;
|
|
16
|
+
erro(mensagem: string, detalhes?: any): void;
|
|
17
|
+
aviso(mensagem: string, detalhes?: any): void;
|
|
18
|
+
info(mensagem: string, detalhes?: any): void;
|
|
19
|
+
depuracao(mensagem: string, detalhes?: any): void;
|
|
20
|
+
/**
|
|
21
|
+
* Registra uma consulta executada para análise de N+1.
|
|
22
|
+
*/
|
|
23
|
+
registrarConsulta(sql: string, quantidadeRegistros: number, tempoExecucao?: number, nomeEntidade?: string): void;
|
|
24
|
+
/**
|
|
25
|
+
* Analisa consultas para detectar padrão N+1.
|
|
26
|
+
*/
|
|
27
|
+
analisarN1(): AnaliseN1;
|
|
28
|
+
/**
|
|
29
|
+
* Habilita ou desabilita a detecção de N+1.
|
|
30
|
+
*/
|
|
31
|
+
definirDeteccaoN1Habilitada(habilitada: boolean): void;
|
|
32
|
+
/**
|
|
33
|
+
* Retorna o detector de N+1 para acesso direto.
|
|
34
|
+
*/
|
|
35
|
+
obterDetectorN1(): DetectorConsultasN1;
|
|
36
|
+
/**
|
|
37
|
+
* Limpa o histórico de consultas rastreadas.
|
|
38
|
+
*/
|
|
39
|
+
limparConsultas(): void;
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=taquigrafia.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"taquigrafia.d.ts","sourceRoot":"","sources":["../../fontes/taquigrafia.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,KAAK,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAC3E,OAAO,KAAK,EAAE,iBAAiB,EAAE,4BAA4B,EAAE,MAAM,SAAS,CAAC;AAE/E,YAAY,EAAE,iBAAiB,EAAE,4BAA4B,EAAE,MAAM,SAAS,CAAC;AAU/E;;;;GAIG;AACH,qBAAa,UAAU;IACnB,KAAK,EAAE,4BAA4B,CAAC;IACpC,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,OAAO,CAAC,UAAU,CAAsB;IACxC,OAAO,CAAC,mBAAmB,CAAiB;gBAEhC,KAAK,GAAE,4BAAqC,EAAE,iBAAiB,CAAC,EAAE,iBAAiB;IAY/F,OAAO,CAAC,qBAAqB;IAI7B,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,GAAG,GAAG,IAAI;IAM5C,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,GAAG,GAAG,IAAI;IAM7C,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,GAAG,GAAG,IAAI;IAM5C,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,GAAG,GAAG,IAAI;IAMjD;;OAEG;IACH,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,mBAAmB,EAAE,MAAM,EAAE,aAAa,GAAE,MAAU,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI;IAMnH;;OAEG;IACH,UAAU,IAAI,SAAS;IAevB;;OAEG;IACH,2BAA2B,CAAC,UAAU,EAAE,OAAO,GAAG,IAAI;IAItD;;OAEG;IACH,eAAe,IAAI,mBAAmB;IAItC;;OAEG;IACH,eAAe,IAAI,IAAI;CAG1B"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Taquigrafo = void 0;
|
|
4
|
+
const detector_n_mais_um_1 = require("./detector-n-mais-um");
|
|
5
|
+
const NIVEIS_PRIORIDADE_DETALHAMENTO = {
|
|
6
|
+
'desligado': 0,
|
|
7
|
+
'erros': 1,
|
|
8
|
+
'avisos': 2,
|
|
9
|
+
'info': 3,
|
|
10
|
+
'depuracao': 4
|
|
11
|
+
};
|
|
12
|
+
/**
|
|
13
|
+
* Taquígrafo, conhecido em inglês como _"shorthand logger"_, é um serviço simples
|
|
14
|
+
* e eficiente para a anotação de diferentes operações, com suporte a níveis
|
|
15
|
+
* de detalhamento e mensagens estruturadas. Inclui detecção de padrão N+1.
|
|
16
|
+
*/
|
|
17
|
+
class Taquigrafo {
|
|
18
|
+
constructor(nivel = 'info', funcaoTaquigrafia) {
|
|
19
|
+
this.habilitarDeteccaoN1 = true;
|
|
20
|
+
this.nivel = nivel;
|
|
21
|
+
this.detectorN1 = new detector_n_mais_um_1.DetectorConsultasN1();
|
|
22
|
+
this.funcaoTaquigrafia = funcaoTaquigrafia || ((mensagem, detalhes) => {
|
|
23
|
+
if (detalhes !== undefined) {
|
|
24
|
+
console.log(mensagem, detalhes);
|
|
25
|
+
}
|
|
26
|
+
else {
|
|
27
|
+
console.log(mensagem);
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
deveRegistrarOperacao(nivel) {
|
|
32
|
+
return NIVEIS_PRIORIDADE_DETALHAMENTO[nivel] <= NIVEIS_PRIORIDADE_DETALHAMENTO[this.nivel];
|
|
33
|
+
}
|
|
34
|
+
erro(mensagem, detalhes) {
|
|
35
|
+
if (this.deveRegistrarOperacao('erros')) {
|
|
36
|
+
this.funcaoTaquigrafia(`[ERRO] ${mensagem}`, detalhes);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
aviso(mensagem, detalhes) {
|
|
40
|
+
if (this.deveRegistrarOperacao('avisos')) {
|
|
41
|
+
this.funcaoTaquigrafia(`[AVISO] ${mensagem}`, detalhes);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
info(mensagem, detalhes) {
|
|
45
|
+
if (this.deveRegistrarOperacao('info')) {
|
|
46
|
+
this.funcaoTaquigrafia(`[INFO] ${mensagem}`, detalhes);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
depuracao(mensagem, detalhes) {
|
|
50
|
+
if (this.deveRegistrarOperacao('depuracao')) {
|
|
51
|
+
this.funcaoTaquigrafia(`[DEPURAÇÃO] ${mensagem}`, detalhes);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Registra uma consulta executada para análise de N+1.
|
|
56
|
+
*/
|
|
57
|
+
registrarConsulta(sql, quantidadeRegistros, tempoExecucao = 0, nomeEntidade) {
|
|
58
|
+
if (this.habilitarDeteccaoN1) {
|
|
59
|
+
this.detectorN1.registrarConsulta(sql, quantidadeRegistros, tempoExecucao, nomeEntidade);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Analisa consultas para detectar padrão N+1.
|
|
64
|
+
*/
|
|
65
|
+
analisarN1() {
|
|
66
|
+
if (!this.habilitarDeteccaoN1) {
|
|
67
|
+
return { detectado: false };
|
|
68
|
+
}
|
|
69
|
+
const analise = this.detectorN1.analisar();
|
|
70
|
+
// Se detectado N+1, emitir aviso
|
|
71
|
+
if (analise.detectado && analise.sugestao) {
|
|
72
|
+
this.aviso('Padrão N+1 detectado!', analise);
|
|
73
|
+
}
|
|
74
|
+
return analise;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Habilita ou desabilita a detecção de N+1.
|
|
78
|
+
*/
|
|
79
|
+
definirDeteccaoN1Habilitada(habilitada) {
|
|
80
|
+
this.habilitarDeteccaoN1 = habilitada;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Retorna o detector de N+1 para acesso direto.
|
|
84
|
+
*/
|
|
85
|
+
obterDetectorN1() {
|
|
86
|
+
return this.detectorN1;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Limpa o histórico de consultas rastreadas.
|
|
90
|
+
*/
|
|
91
|
+
limparConsultas() {
|
|
92
|
+
this.detectorN1.limpar();
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
exports.Taquigrafo = Taquigrafo;
|
|
96
|
+
//# sourceMappingURL=taquigrafia.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"taquigrafia.js","sourceRoot":"","sources":["../../fontes/taquigrafia.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tipos.d.ts","sourceRoot":"","sources":["../../fontes/tipos.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,4BAA4B,GAAG,WAAW,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,GAAG,WAAW,CAAC;AAEnG,MAAM,MAAM,iBAAiB,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC"}
|
package/fontes/tipos.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tipos.js","sourceRoot":"","sources":["../../fontes/tipos.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { TecnologiaLinconesInterface } from "@designliquido/lincones-js";
|
|
2
|
+
import { TransacaoInterface } from "./interfaces-tipos/transacao-interface";
|
|
3
|
+
/**
|
|
4
|
+
* Implementação de transação de banco de dados com suporte a savepoints.
|
|
5
|
+
* Mantém controle de operações realizadas durante a transação
|
|
6
|
+
* e permite criar pontos de reversão parcial (savepoints).
|
|
7
|
+
*/
|
|
8
|
+
export declare class Transacao implements TransacaoInterface {
|
|
9
|
+
private tecnologia;
|
|
10
|
+
private operacoes;
|
|
11
|
+
private ativa;
|
|
12
|
+
private pontosConfirmacao;
|
|
13
|
+
private nomeBancoDados;
|
|
14
|
+
constructor(tecnologia: TecnologiaLinconesInterface, nomeBancoDados?: string);
|
|
15
|
+
/**
|
|
16
|
+
* Define o banco de dados para gerar SQL correto.
|
|
17
|
+
*/
|
|
18
|
+
definirBancoDados(nome: string): void;
|
|
19
|
+
/**
|
|
20
|
+
* Registra uma operação na transação.
|
|
21
|
+
* Internamente usada para rastrear mudanças.
|
|
22
|
+
*/
|
|
23
|
+
registrarOperacao(comando: any): void;
|
|
24
|
+
/**
|
|
25
|
+
* Retorna as operações registradas.
|
|
26
|
+
*/
|
|
27
|
+
obterOperacoes(): any[];
|
|
28
|
+
/**
|
|
29
|
+
* Confirma a transação.
|
|
30
|
+
* Todas as operações registradas são consideradas finais.
|
|
31
|
+
*/
|
|
32
|
+
confirmar(): Promise<void>;
|
|
33
|
+
/**
|
|
34
|
+
* Reverte a transação.
|
|
35
|
+
* Todas as operações registradas são descartadas.
|
|
36
|
+
*/
|
|
37
|
+
reverter(): Promise<void>;
|
|
38
|
+
/**
|
|
39
|
+
* Indica se a transação está ativa.
|
|
40
|
+
*/
|
|
41
|
+
estaAtiva(): boolean;
|
|
42
|
+
/**
|
|
43
|
+
* Cria um savepoint com o nome especificado.
|
|
44
|
+
* Permite reverter para este ponto sem descartar toda a transação.
|
|
45
|
+
*/
|
|
46
|
+
criarPontoDeConfirmacao(nome: string): Promise<void>;
|
|
47
|
+
/**
|
|
48
|
+
* Reverte a transação para um ponto de confirmação anterior.
|
|
49
|
+
*/
|
|
50
|
+
reverterParaPontoDeConfirmacao(nome: string): Promise<void>;
|
|
51
|
+
/**
|
|
52
|
+
* Libera (remove) um ponto de confirmação criado anteriormente.
|
|
53
|
+
*/
|
|
54
|
+
liberarPontoDeConfirmacao(nome: string): Promise<void>;
|
|
55
|
+
/**
|
|
56
|
+
* Obtém lista de savepoints ativos.
|
|
57
|
+
*/
|
|
58
|
+
obterPontosDeConfirmacao(): string[];
|
|
59
|
+
/**
|
|
60
|
+
* Gera SQL de criação de ponto de confirmação apropriado para o banco de dados.
|
|
61
|
+
*/
|
|
62
|
+
private gerarSQLPontoDeConfirmacao;
|
|
63
|
+
/**
|
|
64
|
+
* Gera SQL de reversão para um ponto de confirmação apropriado para o banco de dados.
|
|
65
|
+
*/
|
|
66
|
+
private gerarSQLReversaoPontoDeConfirmacao;
|
|
67
|
+
/**
|
|
68
|
+
* Gera SQL de liberação de ponto de confirmação apropriado para o banco de dados.
|
|
69
|
+
*/
|
|
70
|
+
private gerarSQLLiberacaoPontoDeConfirmacao;
|
|
71
|
+
/**
|
|
72
|
+
* Detecta o tipo de banco de dados para gerar SQL apropriado.
|
|
73
|
+
*/
|
|
74
|
+
private detectorBancoDados;
|
|
75
|
+
/**
|
|
76
|
+
* Escapa nome do savepoint para uso em SQL.
|
|
77
|
+
* Adiciona backticks ou aspas conforme necessário.
|
|
78
|
+
*/
|
|
79
|
+
private escaparNomePontoDeConfirmacao;
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=transacao.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transacao.d.ts","sourceRoot":"","sources":["../../fontes/transacao.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAC;AAEzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,wCAAwC,CAAC;AAU5E;;;;GAIG;AACH,qBAAa,SAAU,YAAW,kBAAkB;IAChD,OAAO,CAAC,UAAU,CAA8B;IAChD,OAAO,CAAC,SAAS,CAAa;IAC9B,OAAO,CAAC,KAAK,CAAiB;IAC9B,OAAO,CAAC,iBAAiB,CAAuB;IAChD,OAAO,CAAC,cAAc,CAAoB;gBAE9B,UAAU,EAAE,2BAA2B,EAAE,cAAc,GAAE,MAAiB;IAKtF;;OAEG;IACH,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAIrC;;;OAGG;IACH,iBAAiB,CAAC,OAAO,EAAE,GAAG,GAAG,IAAI;IAOrC;;OAEG;IACH,cAAc,IAAI,GAAG,EAAE;IAIvB;;;OAGG;IACG,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAYhC;;;OAGG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAY/B;;OAEG;IACH,SAAS,IAAI,OAAO;IAIpB;;;OAGG;IACG,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAsC1D;;OAEG;IACG,8BAA8B,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA2BjE;;OAEG;IACG,yBAAyB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA0B5D;;OAEG;IACH,wBAAwB,IAAI,MAAM,EAAE;IAIpC;;OAEG;IACH,OAAO,CAAC,0BAA0B;IAKlC;;OAEG;IACH,OAAO,CAAC,kCAAkC;IAkB1C;;OAEG;IACH,OAAO,CAAC,mCAAmC;IAoB3C;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAqB1B;;;OAGG;IACH,OAAO,CAAC,6BAA6B;CAKxC"}
|
|
@@ -0,0 +1,243 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Transacao = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Implementação de transação de banco de dados com suporte a savepoints.
|
|
6
|
+
* Mantém controle de operações realizadas durante a transação
|
|
7
|
+
* e permite criar pontos de reversão parcial (savepoints).
|
|
8
|
+
*/
|
|
9
|
+
class Transacao {
|
|
10
|
+
constructor(tecnologia, nomeBancoDados = "padrão") {
|
|
11
|
+
this.operacoes = [];
|
|
12
|
+
this.ativa = true;
|
|
13
|
+
this.pontosConfirmacao = [];
|
|
14
|
+
this.nomeBancoDados = "padrão";
|
|
15
|
+
this.tecnologia = tecnologia;
|
|
16
|
+
this.nomeBancoDados = nomeBancoDados;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Define o banco de dados para gerar SQL correto.
|
|
20
|
+
*/
|
|
21
|
+
definirBancoDados(nome) {
|
|
22
|
+
this.nomeBancoDados = nome;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Registra uma operação na transação.
|
|
26
|
+
* Internamente usada para rastrear mudanças.
|
|
27
|
+
*/
|
|
28
|
+
registrarOperacao(comando) {
|
|
29
|
+
if (!this.ativa) {
|
|
30
|
+
throw new Error('Transação não está ativa');
|
|
31
|
+
}
|
|
32
|
+
this.operacoes.push(comando);
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Retorna as operações registradas.
|
|
36
|
+
*/
|
|
37
|
+
obterOperacoes() {
|
|
38
|
+
return [...this.operacoes];
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Confirma a transação.
|
|
42
|
+
* Todas as operações registradas são consideradas finais.
|
|
43
|
+
*/
|
|
44
|
+
async confirmar() {
|
|
45
|
+
if (!this.ativa) {
|
|
46
|
+
throw new Error('Transação não está ativa');
|
|
47
|
+
}
|
|
48
|
+
// Em um provedor real, isso executaria COMMIT no banco de dados
|
|
49
|
+
// Por enquanto, apenas marcamos a transação como finalizada
|
|
50
|
+
this.ativa = false;
|
|
51
|
+
this.operacoes = [];
|
|
52
|
+
this.pontosConfirmacao = [];
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Reverte a transação.
|
|
56
|
+
* Todas as operações registradas são descartadas.
|
|
57
|
+
*/
|
|
58
|
+
async reverter() {
|
|
59
|
+
if (!this.ativa) {
|
|
60
|
+
throw new Error('Transação não está ativa');
|
|
61
|
+
}
|
|
62
|
+
// Em um provedor real, isso executaria ROLLBACK no banco de dados
|
|
63
|
+
// Aqui apenas descartamos as operações registradas
|
|
64
|
+
this.ativa = false;
|
|
65
|
+
this.operacoes = [];
|
|
66
|
+
this.pontosConfirmacao = [];
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Indica se a transação está ativa.
|
|
70
|
+
*/
|
|
71
|
+
estaAtiva() {
|
|
72
|
+
return this.ativa;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Cria um savepoint com o nome especificado.
|
|
76
|
+
* Permite reverter para este ponto sem descartar toda a transação.
|
|
77
|
+
*/
|
|
78
|
+
async criarPontoDeConfirmacao(nome) {
|
|
79
|
+
if (!this.ativa) {
|
|
80
|
+
throw new Error('Transação não está ativa');
|
|
81
|
+
}
|
|
82
|
+
// Validar nome de ponto de confirmação
|
|
83
|
+
if (!nome || nome.trim() === '') {
|
|
84
|
+
throw new Error('Nome do ponto de confirmação não pode estar vazio');
|
|
85
|
+
}
|
|
86
|
+
if (!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(nome)) {
|
|
87
|
+
throw new Error('Nome do ponto de confirmação contém caracteres inválidos. Use apenas letras, números e underscore');
|
|
88
|
+
}
|
|
89
|
+
// Verificar se ponto de confirmação já existe
|
|
90
|
+
if (this.pontosConfirmacao.some(sp => sp.nome === nome)) {
|
|
91
|
+
throw new Error(`Ponto de confirmação '${nome}' já existe`);
|
|
92
|
+
}
|
|
93
|
+
// Gerar SQL do ponto de confirmação
|
|
94
|
+
const sql = this.gerarSQLPontoDeConfirmacao(nome);
|
|
95
|
+
// Registrar ponto de confirmação
|
|
96
|
+
this.pontosConfirmacao.push({
|
|
97
|
+
nome: nome,
|
|
98
|
+
criadoEm: new Date()
|
|
99
|
+
});
|
|
100
|
+
// Em um provedor real, executaria o SQL
|
|
101
|
+
// Por enquanto, apenas simulamos
|
|
102
|
+
this.registrarOperacao({
|
|
103
|
+
tipo: 'PONTO_DE_CONFIRMACAO',
|
|
104
|
+
nome: nome,
|
|
105
|
+
sql: sql,
|
|
106
|
+
timestamp: new Date()
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Reverte a transação para um ponto de confirmação anterior.
|
|
111
|
+
*/
|
|
112
|
+
async reverterParaPontoDeConfirmacao(nome) {
|
|
113
|
+
if (!this.ativa) {
|
|
114
|
+
throw new Error('Transação não está ativa');
|
|
115
|
+
}
|
|
116
|
+
// Verificar se ponto de confirmação existe
|
|
117
|
+
const indice = this.pontosConfirmacao.findIndex(sp => sp.nome === nome);
|
|
118
|
+
if (indice === -1) {
|
|
119
|
+
throw new Error(`Ponto de confirmação '${nome}' não existe`);
|
|
120
|
+
}
|
|
121
|
+
// Gerar SQL de reversão
|
|
122
|
+
const sql = this.gerarSQLReversaoPontoDeConfirmacao(nome);
|
|
123
|
+
// Remover pontos de confirmação posteriores (não incluindo o ponto de confirmação revertido)
|
|
124
|
+
const pontosRemovidos = this.pontosConfirmacao.splice(indice + 1);
|
|
125
|
+
// Registrar operação
|
|
126
|
+
this.registrarOperacao({
|
|
127
|
+
tipo: 'REVERSAO_PONTO_DE_CONFIRMACAO',
|
|
128
|
+
nome: nome,
|
|
129
|
+
sql: sql,
|
|
130
|
+
savepointsRemovidos: pontosRemovidos.map(sp => sp.nome),
|
|
131
|
+
timestamp: new Date()
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Libera (remove) um ponto de confirmação criado anteriormente.
|
|
136
|
+
*/
|
|
137
|
+
async liberarPontoDeConfirmacao(nome) {
|
|
138
|
+
if (!this.ativa) {
|
|
139
|
+
throw new Error('Transação não está ativa');
|
|
140
|
+
}
|
|
141
|
+
// Verificar se ponto de confirmação existe
|
|
142
|
+
const indice = this.pontosConfirmacao.findIndex(sp => sp.nome === nome);
|
|
143
|
+
if (indice === -1) {
|
|
144
|
+
throw new Error(`Ponto de confirmação '${nome}' não existe`);
|
|
145
|
+
}
|
|
146
|
+
// Gerar SQL de liberação
|
|
147
|
+
const sql = this.gerarSQLLiberacaoPontoDeConfirmacao(nome);
|
|
148
|
+
// Remover ponto de confirmação
|
|
149
|
+
this.pontosConfirmacao.splice(indice, 1);
|
|
150
|
+
// Registrar operação
|
|
151
|
+
this.registrarOperacao({
|
|
152
|
+
tipo: 'RELEASE_SAVEPOINT',
|
|
153
|
+
nome: nome,
|
|
154
|
+
sql: sql,
|
|
155
|
+
timestamp: new Date()
|
|
156
|
+
});
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Obtém lista de savepoints ativos.
|
|
160
|
+
*/
|
|
161
|
+
obterPontosDeConfirmacao() {
|
|
162
|
+
return this.pontosConfirmacao.map(sp => sp.nome);
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Gera SQL de criação de ponto de confirmação apropriado para o banco de dados.
|
|
166
|
+
*/
|
|
167
|
+
gerarSQLPontoDeConfirmacao(nome) {
|
|
168
|
+
// Todos os bancos suportados usam SAVEPOINT <name>
|
|
169
|
+
return `SAVEPOINT ${this.escaparNomePontoDeConfirmacao(nome)}`;
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Gera SQL de reversão para um ponto de confirmação apropriado para o banco de dados.
|
|
173
|
+
*/
|
|
174
|
+
gerarSQLReversaoPontoDeConfirmacao(nome) {
|
|
175
|
+
const nomeSafepoint = this.escaparNomePontoDeConfirmacao(nome);
|
|
176
|
+
switch (this.detectorBancoDados()) {
|
|
177
|
+
case 'sqlserver':
|
|
178
|
+
// SQL Server usa ROLLBACK TRANSACTION
|
|
179
|
+
return `ROLLBACK TRANSACTION ${nomeSafepoint}`;
|
|
180
|
+
case 'mysql':
|
|
181
|
+
// MySQL usa ROLLBACK TO SAVEPOINT
|
|
182
|
+
return `ROLLBACK TO SAVEPOINT ${nomeSafepoint}`;
|
|
183
|
+
case 'postgresql':
|
|
184
|
+
case 'sqlite':
|
|
185
|
+
default:
|
|
186
|
+
// PostgreSQL e SQLite usam ROLLBACK TO
|
|
187
|
+
return `ROLLBACK TO ${nomeSafepoint}`;
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* Gera SQL de liberação de ponto de confirmação apropriado para o banco de dados.
|
|
192
|
+
*/
|
|
193
|
+
gerarSQLLiberacaoPontoDeConfirmacao(nome) {
|
|
194
|
+
const nomeSafepoint = this.escaparNomePontoDeConfirmacao(nome);
|
|
195
|
+
switch (this.detectorBancoDados()) {
|
|
196
|
+
case 'sqlserver':
|
|
197
|
+
// SQL Server não possui RELEASE, apenas Remove no ROLLBACK
|
|
198
|
+
return ''; // Sem operação necessária
|
|
199
|
+
case 'mysql':
|
|
200
|
+
// MySQL usa RELEASE SAVEPOINT
|
|
201
|
+
return `RELEASE SAVEPOINT ${nomeSafepoint}`;
|
|
202
|
+
case 'postgresql':
|
|
203
|
+
// PostgreSQL usa RELEASE SAVEPOINT
|
|
204
|
+
return `RELEASE SAVEPOINT ${nomeSafepoint}`;
|
|
205
|
+
case 'sqlite':
|
|
206
|
+
default:
|
|
207
|
+
// SQLite usa RELEASE
|
|
208
|
+
return `RELEASE ${nomeSafepoint}`;
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
/**
|
|
212
|
+
* Detecta o tipo de banco de dados para gerar SQL apropriado.
|
|
213
|
+
*/
|
|
214
|
+
detectorBancoDados() {
|
|
215
|
+
if (!this.nomeBancoDados)
|
|
216
|
+
return 'sqlite';
|
|
217
|
+
const nomeLowercase = this.nomeBancoDados.toLowerCase();
|
|
218
|
+
if (nomeLowercase.includes('sql server') || nomeLowercase === 'sqlserver') {
|
|
219
|
+
return 'sqlserver';
|
|
220
|
+
}
|
|
221
|
+
if (nomeLowercase.includes('mysql')) {
|
|
222
|
+
return 'mysql';
|
|
223
|
+
}
|
|
224
|
+
if (nomeLowercase.includes('postgres') || nomeLowercase === 'postgresql') {
|
|
225
|
+
return 'postgresql';
|
|
226
|
+
}
|
|
227
|
+
if (nomeLowercase.includes('sqlite')) {
|
|
228
|
+
return 'sqlite';
|
|
229
|
+
}
|
|
230
|
+
return 'sqlite'; // default
|
|
231
|
+
}
|
|
232
|
+
/**
|
|
233
|
+
* Escapa nome do savepoint para uso em SQL.
|
|
234
|
+
* Adiciona backticks ou aspas conforme necessário.
|
|
235
|
+
*/
|
|
236
|
+
escaparNomePontoDeConfirmacao(nome) {
|
|
237
|
+
// Validação já foi feita em criarPontoDeConfirmacao
|
|
238
|
+
// Adicionar backticks para segurança extra (funciona em maioria dos BDs)
|
|
239
|
+
return `\`${nome}\``;
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
exports.Transacao = Transacao;
|
|
243
|
+
//# sourceMappingURL=transacao.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transacao.js","sourceRoot":"","sources":["../../fontes/transacao.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { ObjetoDeleguaClasse } from "@designliquido/delegua/interpretador/estruturas";
|
|
2
|
+
import { EntidadeInterface } from "../interfaces-tipos/entidade-interface";
|
|
3
|
+
import { ErroValidacao } from "../erros/erro-validacao";
|
|
4
|
+
export type ValidadorCustomizado = (valor: any, registro: ObjetoDeleguaClasse) => boolean | Promise<boolean>;
|
|
5
|
+
export interface ConfiguracaoValidadorCustomizado {
|
|
6
|
+
validador: ValidadorCustomizado;
|
|
7
|
+
mensagem: string;
|
|
8
|
+
}
|
|
9
|
+
export declare class Validador {
|
|
10
|
+
/**
|
|
11
|
+
* Valida um registro de acordo com os decoradores definidos na entidade.
|
|
12
|
+
* @param entidade - A entidade a ser validada
|
|
13
|
+
* @param registro - O registro com os dados a validar
|
|
14
|
+
* @param verificadorUnicidade - Função opcional para verificar unicidade no banco de dados
|
|
15
|
+
* @returns Array de erros de validação
|
|
16
|
+
*/
|
|
17
|
+
static validar(entidade: EntidadeInterface, registro: ObjetoDeleguaClasse, verificadorUnicidade?: (campo: string, valor: any, idExcluir?: any) => Promise<boolean>): Promise<ErroValidacao[]>;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=validador.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validador.d.ts","sourceRoot":"","sources":["../../../fontes/validacoes/validador.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,iDAAiD,CAAC;AAEtF,OAAO,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAC;AAC3E,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAExD,MAAM,MAAM,oBAAoB,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,mBAAmB,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;AAE7G,MAAM,WAAW,gCAAgC;IAC7C,SAAS,EAAE,oBAAoB,CAAC;IAChC,QAAQ,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,SAAS;IAClB;;;;;;OAMG;WACU,OAAO,CAChB,QAAQ,EAAE,iBAAiB,EAC3B,QAAQ,EAAE,mBAAmB,EAC7B,oBAAoB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,SAAS,CAAC,EAAE,GAAG,KAAK,OAAO,CAAC,OAAO,CAAC,GACxF,OAAO,CAAC,aAAa,EAAE,CAAC;CA2J9B"}
|