@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,374 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Colecao = void 0;
|
|
4
|
+
const lincones_js_1 = require("@designliquido/lincones-js");
|
|
5
|
+
const construtor_consulta_1 = require("./construtor-consulta");
|
|
6
|
+
const validador_1 = require("./validacoes/validador");
|
|
7
|
+
const erro_validacao_1 = require("./erros/erro-validacao");
|
|
8
|
+
const erro_concorrencia_1 = require("./erros/erro-concorrencia");
|
|
9
|
+
const serializador_1 = require("./serializador");
|
|
10
|
+
class Colecao {
|
|
11
|
+
constructor(tipoEntidade, tecnologia, taquigrafo) {
|
|
12
|
+
this.tipoEntidade = tipoEntidade;
|
|
13
|
+
this.tecnologia = tecnologia;
|
|
14
|
+
this.taquigrafo = taquigrafo;
|
|
15
|
+
this.ganchos = {
|
|
16
|
+
antesDeInserir: [],
|
|
17
|
+
aposInserir: [],
|
|
18
|
+
antesDeAtualizar: [],
|
|
19
|
+
aposAtualizar: [],
|
|
20
|
+
antesDeExcluir: [],
|
|
21
|
+
aposExcluir: []
|
|
22
|
+
};
|
|
23
|
+
this.registrarGanchosCarimboTempo();
|
|
24
|
+
}
|
|
25
|
+
registrarGanchosCarimboTempo() {
|
|
26
|
+
const possuiCriadoEm = this.tipoEntidade.possuiCriadoEm();
|
|
27
|
+
const possuiAtualizadoEm = this.tipoEntidade.possuiAtualizadoEm();
|
|
28
|
+
if (possuiCriadoEm || possuiAtualizadoEm) {
|
|
29
|
+
this.adicionarGancho('antesDeInserir', (registro) => {
|
|
30
|
+
const agora = new Date().toISOString();
|
|
31
|
+
if (possuiCriadoEm) {
|
|
32
|
+
registro.propriedades['criado_em'] = agora;
|
|
33
|
+
}
|
|
34
|
+
if (possuiAtualizadoEm) {
|
|
35
|
+
registro.propriedades['atualizado_em'] = agora;
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
if (possuiAtualizadoEm) {
|
|
40
|
+
this.adicionarGancho('antesDeAtualizar', (registro) => {
|
|
41
|
+
registro.propriedades['atualizado_em'] = new Date().toISOString();
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
adicionarGancho(evento, funcao) {
|
|
46
|
+
this.ganchos[evento].push(funcao);
|
|
47
|
+
}
|
|
48
|
+
async executarGanchos(evento, registro) {
|
|
49
|
+
for (const gancho of this.ganchos[evento]) {
|
|
50
|
+
await gancho(registro);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
consulta() {
|
|
54
|
+
this.verificarTecnologia();
|
|
55
|
+
return new construtor_consulta_1.ConstrutorConsulta(this.tipoEntidade, this.tecnologia);
|
|
56
|
+
}
|
|
57
|
+
todos() {
|
|
58
|
+
return new lincones_js_1.Selecionar(-1, this.tipoEntidade.obterNome(), this.tipoEntidade.obterNomesColunas(), [], true);
|
|
59
|
+
}
|
|
60
|
+
obterPorId(valorId) {
|
|
61
|
+
const colunaChavePrimaria = this.tipoEntidade.obterNomeChavePrimaria();
|
|
62
|
+
return new lincones_js_1.Selecionar(-1, this.tipoEntidade.obterNome(), this.tipoEntidade.obterNomesColunas(), [new lincones_js_1.Condicao(new lincones_js_1.ReferenciaColuna(colunaChavePrimaria), 'IGUAL', new lincones_js_1.Literal(valorId, "INTEIRO"))], false);
|
|
63
|
+
}
|
|
64
|
+
inserir(registro) {
|
|
65
|
+
const nomesColunas = this.tipoEntidade.obterNomesColunasPersistentes();
|
|
66
|
+
const valoresColunas = this.tipoEntidade.resolverValoresParaColunas(registro, nomesColunas);
|
|
67
|
+
return new lincones_js_1.Inserir(-1, this.tipoEntidade.obterNome(), nomesColunas, valoresColunas);
|
|
68
|
+
}
|
|
69
|
+
atualizar(registro, colunas = []) {
|
|
70
|
+
let colunasAtualizacao = colunas;
|
|
71
|
+
if (colunasAtualizacao.length === 0) {
|
|
72
|
+
colunasAtualizacao = this.tipoEntidade.obterNomesColunasPersistentes();
|
|
73
|
+
}
|
|
74
|
+
const nomePropriedadeVersao = this.tipoEntidade.obterNomePropriedadeVersao?.() || "";
|
|
75
|
+
// Se a entidade possui campo de versão, preparar versão
|
|
76
|
+
let versaoAtual = null;
|
|
77
|
+
let novaVersao = null;
|
|
78
|
+
if (nomePropriedadeVersao) {
|
|
79
|
+
versaoAtual = registro.propriedades ? registro.propriedades[nomePropriedadeVersao] : registro[nomePropriedadeVersao];
|
|
80
|
+
novaVersao = typeof versaoAtual === 'number' ? versaoAtual + 1 : 1;
|
|
81
|
+
// Atualizar versão no próprio registro
|
|
82
|
+
if (registro.propriedades) {
|
|
83
|
+
registro.propriedades[nomePropriedadeVersao] = novaVersao;
|
|
84
|
+
}
|
|
85
|
+
else {
|
|
86
|
+
registro[nomePropriedadeVersao] = novaVersao;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
const colunasEValores = this.tipoEntidade.resolverColunasEValores(registro, colunasAtualizacao);
|
|
90
|
+
const condicoes = [this.tipoEntidade.resolverCondicaoPorChavePrimaria(registro)];
|
|
91
|
+
// Se a entidade possui campo de versão, adicionar condição de versão
|
|
92
|
+
if (nomePropriedadeVersao) {
|
|
93
|
+
// Adicionar condição de versão atual ao WHERE
|
|
94
|
+
condicoes.push({
|
|
95
|
+
coluna: new lincones_js_1.ReferenciaColuna(nomePropriedadeVersao),
|
|
96
|
+
operador: '=',
|
|
97
|
+
valor: new lincones_js_1.Literal(versaoAtual || 0)
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
return new lincones_js_1.Atualizar(-1, this.tipoEntidade.obterNome(), colunasEValores, condicoes);
|
|
101
|
+
}
|
|
102
|
+
excluir(registro) {
|
|
103
|
+
const condicao = this.tipoEntidade.resolverCondicaoPorChavePrimaria(registro);
|
|
104
|
+
// Se a entidade possui exclusão lógica, atualizar o campo de exclusão em vez de deletar
|
|
105
|
+
if (this.tipoEntidade.possuiExclusaoLogica()) {
|
|
106
|
+
const colunaExclusao = this.tipoEntidade.obterNomeColunaExclusaoLogica();
|
|
107
|
+
const dataExclusao = new Date().toISOString();
|
|
108
|
+
registro.propriedades[colunaExclusao] = dataExclusao;
|
|
109
|
+
const colunasEValores = [
|
|
110
|
+
new lincones_js_1.ColunaEValor(new lincones_js_1.ReferenciaColuna(colunaExclusao), new lincones_js_1.Literal(dataExclusao))
|
|
111
|
+
];
|
|
112
|
+
return new lincones_js_1.Atualizar(-1, this.tipoEntidade.obterNome(), colunasEValores, [condicao]);
|
|
113
|
+
}
|
|
114
|
+
return new lincones_js_1.Excluir(-1, this.tipoEntidade.obterNome(), [condicao]);
|
|
115
|
+
}
|
|
116
|
+
// --- Métodos de execução (requerem tecnologia configurada) ---
|
|
117
|
+
verificarTecnologia() {
|
|
118
|
+
if (!this.tecnologia) {
|
|
119
|
+
throw new Error("Nenhuma tecnologia de banco de dados configurada. " +
|
|
120
|
+
"Use ContextoEntidades para gerenciar coleções com uma tecnologia.");
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
aplicarValoresPadrao(registro) {
|
|
124
|
+
for (const propriedade of this.tipoEntidade.modelo.propriedades) {
|
|
125
|
+
const nomeCampo = propriedade.nome.lexema;
|
|
126
|
+
// Aplicar valor padrão apenas se o campo não foi definido
|
|
127
|
+
if (registro.propriedades[nomeCampo] === undefined || registro.propriedades[nomeCampo] === null) {
|
|
128
|
+
for (const decorador of propriedade.decoradores) {
|
|
129
|
+
const nomeDecorador = decorador.nome.replace(/^@/, '');
|
|
130
|
+
if (nomeDecorador === 'padrao') {
|
|
131
|
+
const valorPadrao = decorador.atributos?.valor || decorador.atributos?.padrao;
|
|
132
|
+
if (valorPadrao !== undefined) {
|
|
133
|
+
registro.propriedades[nomeCampo] = valorPadrao;
|
|
134
|
+
}
|
|
135
|
+
break;
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
async validarRegistro(registro) {
|
|
142
|
+
// Função para verificar unicidade no banco
|
|
143
|
+
const verificadorUnicidade = async (campo, valor, idExcluir) => {
|
|
144
|
+
const chavePrimaria = this.tipoEntidade.obterNomeChavePrimaria();
|
|
145
|
+
const nomeTabela = this.tipoEntidade.obterNome();
|
|
146
|
+
// Construir consulta para verificar se já existe outro registro com este valor
|
|
147
|
+
const construtor = this.consulta();
|
|
148
|
+
construtor.onde(campo, 'IGUAL', valor);
|
|
149
|
+
// Se estiver atualizando, excluir o registro atual da verificação
|
|
150
|
+
if (idExcluir !== undefined && idExcluir !== null) {
|
|
151
|
+
construtor.e(chavePrimaria, 'DIFERENTE', idExcluir);
|
|
152
|
+
}
|
|
153
|
+
const registros = await construtor.todos();
|
|
154
|
+
return registros.length > 0;
|
|
155
|
+
};
|
|
156
|
+
const erros = await validador_1.Validador.validar(this.tipoEntidade, registro, verificadorUnicidade);
|
|
157
|
+
if (erros.length > 0) {
|
|
158
|
+
throw new erro_validacao_1.ErroDeValidacao(erros);
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
async existeRegistroPorChaves(registro) {
|
|
162
|
+
const chaves = this.tipoEntidade.obterNomesChavesPrimarias();
|
|
163
|
+
if (chaves.length === 0) {
|
|
164
|
+
return false;
|
|
165
|
+
}
|
|
166
|
+
const construtor = this.consulta();
|
|
167
|
+
let primeiraCondicao = true;
|
|
168
|
+
for (const chave of chaves) {
|
|
169
|
+
const valor = registro.propriedades[chave];
|
|
170
|
+
if (valor === undefined || valor === null) {
|
|
171
|
+
return false;
|
|
172
|
+
}
|
|
173
|
+
if (primeiraCondicao) {
|
|
174
|
+
construtor.onde(chave, 'IGUAL', valor);
|
|
175
|
+
primeiraCondicao = false;
|
|
176
|
+
}
|
|
177
|
+
else {
|
|
178
|
+
construtor.e(chave, 'IGUAL', valor);
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
const registros = await construtor.todos();
|
|
182
|
+
return registros.length > 0;
|
|
183
|
+
}
|
|
184
|
+
async executarComandoComRegistroOperacao(comando, operacao) {
|
|
185
|
+
const tabela = this.tipoEntidade.obterNome();
|
|
186
|
+
this.taquigrafo?.depuracao(`${operacao} em ${tabela}`, { comando: comando.constructor.name });
|
|
187
|
+
const inicio = Date.now();
|
|
188
|
+
try {
|
|
189
|
+
const resultado = await this.tecnologia.executarComando(comando);
|
|
190
|
+
const duracao = Date.now() - inicio;
|
|
191
|
+
this.taquigrafo?.info(`${operacao} em ${tabela} concluído em ${duracao}ms`);
|
|
192
|
+
return resultado;
|
|
193
|
+
}
|
|
194
|
+
catch (erro) {
|
|
195
|
+
const duracao = Date.now() - inicio;
|
|
196
|
+
this.taquigrafo?.erro(`${operacao} em ${tabela} falhou após ${duracao}ms`, erro);
|
|
197
|
+
throw erro;
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
async buscarTodos() {
|
|
201
|
+
this.verificarTecnologia();
|
|
202
|
+
const comando = this.todos();
|
|
203
|
+
const resultados = await this.executarComandoComRegistroOperacao(comando, 'SELECT *');
|
|
204
|
+
if (resultados.length === 0 || resultados[0].linhasRetornadas.length === 0) {
|
|
205
|
+
return [];
|
|
206
|
+
}
|
|
207
|
+
return this.tipoEntidade.hidratarRegistros(resultados[0].linhasRetornadas);
|
|
208
|
+
}
|
|
209
|
+
async buscarPorId(valorId) {
|
|
210
|
+
this.verificarTecnologia();
|
|
211
|
+
const comando = this.obterPorId(valorId);
|
|
212
|
+
const resultados = await this.executarComandoComRegistroOperacao(comando, 'SELECT WHERE id');
|
|
213
|
+
if (resultados.length === 0 || resultados[0].linhasRetornadas.length === 0) {
|
|
214
|
+
return null;
|
|
215
|
+
}
|
|
216
|
+
return this.tipoEntidade.hidratarRegistro(resultados[0].linhasRetornadas[0]);
|
|
217
|
+
}
|
|
218
|
+
async salvar(registro) {
|
|
219
|
+
this.verificarTecnologia();
|
|
220
|
+
this.aplicarValoresPadrao(registro);
|
|
221
|
+
await this.validarRegistro(registro);
|
|
222
|
+
await this.executarGanchos('antesDeInserir', registro);
|
|
223
|
+
const comando = this.inserir(registro);
|
|
224
|
+
const resultado = await this.executarComandoComRegistroOperacao(comando, 'INSERT');
|
|
225
|
+
await this.executarGanchos('aposInserir', registro);
|
|
226
|
+
return resultado;
|
|
227
|
+
}
|
|
228
|
+
async modificar(registro, colunas = []) {
|
|
229
|
+
this.verificarTecnologia();
|
|
230
|
+
await this.validarRegistro(registro);
|
|
231
|
+
await this.executarGanchos('antesDeAtualizar', registro);
|
|
232
|
+
const comando = this.atualizar(registro, colunas);
|
|
233
|
+
const resultado = await this.executarComandoComRegistroOperacao(comando, 'UPDATE');
|
|
234
|
+
// Verificar conflito de concorrência
|
|
235
|
+
const nomePropriedadeVersao = this.tipoEntidade.obterNomePropriedadeVersao?.();
|
|
236
|
+
if (nomePropriedadeVersao && resultado[0] && resultado[0][0]?.affectedRows === 0) {
|
|
237
|
+
throw new erro_concorrencia_1.ErroConcorrencia(`Não foi possível atualizar o registro. Possível conflito de versão: o registro foi modificado por outro processo.`);
|
|
238
|
+
}
|
|
239
|
+
await this.executarGanchos('aposAtualizar', registro);
|
|
240
|
+
return resultado;
|
|
241
|
+
}
|
|
242
|
+
async salvarOuAtualizar(registro, colunas = []) {
|
|
243
|
+
this.verificarTecnologia();
|
|
244
|
+
const existe = await this.existeRegistroPorChaves(registro);
|
|
245
|
+
if (existe) {
|
|
246
|
+
return this.modificar(registro, colunas);
|
|
247
|
+
}
|
|
248
|
+
return this.salvar(registro);
|
|
249
|
+
}
|
|
250
|
+
async upsert(registro, colunas = []) {
|
|
251
|
+
return this.salvarOuAtualizar(registro, colunas);
|
|
252
|
+
}
|
|
253
|
+
async remover(registro) {
|
|
254
|
+
this.verificarTecnologia();
|
|
255
|
+
await this.executarGanchos('antesDeExcluir', registro);
|
|
256
|
+
const comando = this.excluir(registro);
|
|
257
|
+
const resultado = await this.executarComandoComRegistroOperacao(comando, 'DELETE');
|
|
258
|
+
await this.executarGanchos('aposExcluir', registro);
|
|
259
|
+
return resultado;
|
|
260
|
+
}
|
|
261
|
+
/**
|
|
262
|
+
* Insere múltiplos registros em uma operação.
|
|
263
|
+
* Executa ganchos de inserção para cada registro.
|
|
264
|
+
*/
|
|
265
|
+
async inserirVarios(registros) {
|
|
266
|
+
this.verificarTecnologia();
|
|
267
|
+
if (registros.length === 0) {
|
|
268
|
+
return [];
|
|
269
|
+
}
|
|
270
|
+
const resultados = [];
|
|
271
|
+
for (const registro of registros) {
|
|
272
|
+
this.aplicarValoresPadrao(registro);
|
|
273
|
+
await this.validarRegistro(registro);
|
|
274
|
+
await this.executarGanchos('antesDeInserir', registro);
|
|
275
|
+
const comando = this.inserir(registro);
|
|
276
|
+
const resultado = await this.executarComandoComRegistroOperacao(comando, 'INSERT LOTE');
|
|
277
|
+
resultados.push(resultado);
|
|
278
|
+
await this.executarGanchos('aposInserir', registro);
|
|
279
|
+
}
|
|
280
|
+
return resultados;
|
|
281
|
+
}
|
|
282
|
+
/**
|
|
283
|
+
* Atualiza múltiplos registros em uma operação.
|
|
284
|
+
* Executa ganchos de atualização para cada registro.
|
|
285
|
+
*/
|
|
286
|
+
async atualizarVarios(registros, colunas = []) {
|
|
287
|
+
this.verificarTecnologia();
|
|
288
|
+
if (registros.length === 0) {
|
|
289
|
+
return [];
|
|
290
|
+
}
|
|
291
|
+
const resultados = [];
|
|
292
|
+
const nomePropriedadeVersao = this.tipoEntidade.obterNomePropriedadeVersao?.();
|
|
293
|
+
for (const registro of registros) {
|
|
294
|
+
await this.validarRegistro(registro);
|
|
295
|
+
await this.executarGanchos('antesDeAtualizar', registro);
|
|
296
|
+
const comando = this.atualizar(registro, colunas);
|
|
297
|
+
const resultado = await this.executarComandoComRegistroOperacao(comando, 'UPDATE LOTE');
|
|
298
|
+
// Verificar conflito de concorrência
|
|
299
|
+
if (nomePropriedadeVersao && resultado[0] && resultado[0][0]?.affectedRows === 0) {
|
|
300
|
+
throw new erro_concorrencia_1.ErroConcorrencia(`Não foi possível atualizar o registro. Possível conflito de versão: o registro foi modificado por outro processo.`);
|
|
301
|
+
}
|
|
302
|
+
resultados.push(resultado);
|
|
303
|
+
await this.executarGanchos('aposAtualizar', registro);
|
|
304
|
+
}
|
|
305
|
+
return resultados;
|
|
306
|
+
}
|
|
307
|
+
/**
|
|
308
|
+
* Exclui múltiplos registros em uma operação.
|
|
309
|
+
* Executa ganchos de exclusão para cada registro.
|
|
310
|
+
*/
|
|
311
|
+
async excluirVarios(registros) {
|
|
312
|
+
this.verificarTecnologia();
|
|
313
|
+
if (registros.length === 0) {
|
|
314
|
+
return [];
|
|
315
|
+
}
|
|
316
|
+
const resultados = [];
|
|
317
|
+
for (const registro of registros) {
|
|
318
|
+
await this.executarGanchos('antesDeExcluir', registro);
|
|
319
|
+
const comando = this.excluir(registro);
|
|
320
|
+
const resultado = await this.executarComandoComRegistroOperacao(comando, 'DELETE LOTE');
|
|
321
|
+
resultados.push(resultado);
|
|
322
|
+
await this.executarGanchos('aposExcluir', registro);
|
|
323
|
+
}
|
|
324
|
+
return resultados;
|
|
325
|
+
}
|
|
326
|
+
/**
|
|
327
|
+
* Restaura um registro excluído logicamente (_soft delete_).
|
|
328
|
+
* Remove a marca de exclusão do registro.
|
|
329
|
+
* Lança erro se a entidade não possui exclusão lógica habilitada.
|
|
330
|
+
*/
|
|
331
|
+
async restaurar(registro) {
|
|
332
|
+
this.verificarTecnologia();
|
|
333
|
+
if (!this.tipoEntidade.possuiExclusaoLogica()) {
|
|
334
|
+
throw new Error('Esta entidade não possui exclusão lógica habilitada');
|
|
335
|
+
}
|
|
336
|
+
const colunaExclusao = this.tipoEntidade.obterNomeColunaExclusaoLogica();
|
|
337
|
+
const condicao = this.tipoEntidade.resolverCondicaoPorChavePrimaria(registro);
|
|
338
|
+
// Limpar o campo de exclusão
|
|
339
|
+
registro.propriedades[colunaExclusao] = null;
|
|
340
|
+
const colunasEValores = [
|
|
341
|
+
new lincones_js_1.ColunaEValor(new lincones_js_1.ReferenciaColuna(colunaExclusao), new lincones_js_1.Literal(null, 'TEXTO'))
|
|
342
|
+
];
|
|
343
|
+
const comando = new lincones_js_1.Atualizar(-1, this.tipoEntidade.obterNome(), colunasEValores, [condicao]);
|
|
344
|
+
const resultado = await this.executarComandoComRegistroOperacao(comando, 'RESTAURAR');
|
|
345
|
+
return resultado;
|
|
346
|
+
}
|
|
347
|
+
// --- Métodos de Serialização ---
|
|
348
|
+
/**
|
|
349
|
+
* Serializa um registro para dicionário (objeto JavaScript).
|
|
350
|
+
*/
|
|
351
|
+
serializarParaDicionario(registro, opcoes) {
|
|
352
|
+
return serializador_1.Serializador.paraDicionario(registro, this.tipoEntidade, opcoes);
|
|
353
|
+
}
|
|
354
|
+
/**
|
|
355
|
+
* Serializa um registro para JSON.
|
|
356
|
+
*/
|
|
357
|
+
serializarParaJson(registro, opcoes) {
|
|
358
|
+
return serializador_1.Serializador.paraJson(registro, this.tipoEntidade, opcoes);
|
|
359
|
+
}
|
|
360
|
+
/**
|
|
361
|
+
* Serializa múltiplos registros para array de dicionários.
|
|
362
|
+
*/
|
|
363
|
+
serializarMuitosParaDicionario(registros, opcoes) {
|
|
364
|
+
return serializador_1.Serializador.muitosParaDicionario(registros, this.tipoEntidade, opcoes);
|
|
365
|
+
}
|
|
366
|
+
/**
|
|
367
|
+
* Serializa múltiplos registros para JSON com array.
|
|
368
|
+
*/
|
|
369
|
+
serializarMuitosParaJson(registros, opcoes) {
|
|
370
|
+
return serializador_1.Serializador.muitosParaJson(registros, this.tipoEntidade, opcoes);
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
exports.Colecao = Colecao;
|
|
374
|
+
//# sourceMappingURL=colecao.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"colecao.js","sourceRoot":"","sources":["../../fontes/colecao.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
import { Juncao, TecnologiaLinconesInterface } from "@designliquido/lincones-js";
|
|
2
|
+
import { ObjetoDeleguaClasse } from "@designliquido/delegua/interpretador/estruturas";
|
|
3
|
+
import { EntidadeInterface } from "./interfaces-tipos/entidade-interface";
|
|
4
|
+
type OperadorCondicao = 'IGUAL' | 'DIFERENTE' | 'MAIOR' | 'MAIOR_IGUAL' | 'MENOR' | 'MENOR_IGUAL' | 'EM' | 'NAO_EM' | 'COMO' | 'NAO_COMO' | 'ENTRE' | 'COMECA_COM' | 'TERMINA_COM' | 'CONTEM' | 'NULO' | 'NAO_NULO';
|
|
5
|
+
/**
|
|
6
|
+
* Construtor de consultas fluente para entidades.
|
|
7
|
+
* Permite encadear condições, ordenações, limites e deslocamentos.
|
|
8
|
+
*/
|
|
9
|
+
export declare class ConstrutorConsulta {
|
|
10
|
+
private entidade;
|
|
11
|
+
private tecnologia;
|
|
12
|
+
private tradutor;
|
|
13
|
+
private _tabela;
|
|
14
|
+
private _colunas;
|
|
15
|
+
private _condicoes;
|
|
16
|
+
private _condicoesOu;
|
|
17
|
+
private _condicoesSqlExtras;
|
|
18
|
+
private _condicoesOuSqlExtras;
|
|
19
|
+
private _ordenacoes;
|
|
20
|
+
private _limite;
|
|
21
|
+
private _deslocamento;
|
|
22
|
+
private _juncoes;
|
|
23
|
+
private _colunasPersonalizadas;
|
|
24
|
+
private _relacionadosParaCarregar;
|
|
25
|
+
private _agrupamentos;
|
|
26
|
+
private _condicoesTendo;
|
|
27
|
+
private _incluirExcluidos;
|
|
28
|
+
constructor(entidade: EntidadeInterface, tecnologia: TecnologiaLinconesInterface);
|
|
29
|
+
/**
|
|
30
|
+
* Adiciona uma condição WHERE (AND).
|
|
31
|
+
*/
|
|
32
|
+
onde(coluna: string, operador: OperadorCondicao, valor: any): ConstrutorConsulta;
|
|
33
|
+
/**
|
|
34
|
+
* Adiciona mais uma condição AND.
|
|
35
|
+
*/
|
|
36
|
+
e(coluna: string, operador: OperadorCondicao, valor: any): ConstrutorConsulta;
|
|
37
|
+
/**
|
|
38
|
+
* Adiciona uma condição OR. Internamente cria um grupo separado de condições.
|
|
39
|
+
*/
|
|
40
|
+
ou(coluna: string, operador: OperadorCondicao, valor: any): ConstrutorConsulta;
|
|
41
|
+
/**
|
|
42
|
+
* Define as colunas a serem selecionadas.
|
|
43
|
+
*/
|
|
44
|
+
selecionar(...colunas: string[]): ConstrutorConsulta;
|
|
45
|
+
/**
|
|
46
|
+
* Adiciona uma ordenação.
|
|
47
|
+
*/
|
|
48
|
+
ordenarPor(coluna: string, direcao?: 'ASC' | 'DESC'): ConstrutorConsulta;
|
|
49
|
+
/**
|
|
50
|
+
* Define o limite de registros retornados.
|
|
51
|
+
*/
|
|
52
|
+
limite(valor: number): ConstrutorConsulta;
|
|
53
|
+
/**
|
|
54
|
+
* Define o deslocamento (offset) dos registros.
|
|
55
|
+
*/
|
|
56
|
+
deslocamento(valor: number): ConstrutorConsulta;
|
|
57
|
+
/**
|
|
58
|
+
* Define colunas para agrupamento (GROUP BY).
|
|
59
|
+
*/
|
|
60
|
+
agruparPor(...colunas: string[]): ConstrutorConsulta;
|
|
61
|
+
/**
|
|
62
|
+
* Adiciona condição HAVING (AND).
|
|
63
|
+
*/
|
|
64
|
+
tendo(coluna: string, operador: OperadorCondicao, valor: any): ConstrutorConsulta;
|
|
65
|
+
/**
|
|
66
|
+
* Adiciona uma junção (JOIN) a partir do nome de um relacionamento definido na entidade.
|
|
67
|
+
* Os relacionamentos são detectados pelos decoradores @temUm, @temMuitos e @pertenceA.
|
|
68
|
+
*/
|
|
69
|
+
incluir(nomeRelacionamento: string): ConstrutorConsulta;
|
|
70
|
+
/**
|
|
71
|
+
* Adiciona uma junção (JOIN) diretamente com um objeto Juncao.
|
|
72
|
+
*/
|
|
73
|
+
incluirJuncao(juncao: Juncao): ConstrutorConsulta;
|
|
74
|
+
/**
|
|
75
|
+
* Usa uma subconsulta como fonte (FROM).
|
|
76
|
+
*/
|
|
77
|
+
deSubconsulta(subconsulta: ConstrutorConsulta, alias: string): ConstrutorConsulta;
|
|
78
|
+
/**
|
|
79
|
+
* Marca relacionamentos para carregamento antecipado (eager loading).
|
|
80
|
+
* Os dados relacionados serão carregados em consultas separadas e anexados aos registros pai.
|
|
81
|
+
*/
|
|
82
|
+
incluirRelacionados(...nomes: string[]): ConstrutorConsulta;
|
|
83
|
+
/**
|
|
84
|
+
* Inclui registros com exclusão lógica (soft-deleted) na consulta.
|
|
85
|
+
* Por padrão, registros com exclusão lógica são filtrados automaticamente.
|
|
86
|
+
*/
|
|
87
|
+
incluirExcluidos(): ConstrutorConsulta;
|
|
88
|
+
/**
|
|
89
|
+
* Executa a consulta e retorna todos os registros encontrados.
|
|
90
|
+
*/
|
|
91
|
+
todos(): Promise<ObjetoDeleguaClasse[]>;
|
|
92
|
+
/**
|
|
93
|
+
* Executa a consulta e retorna o primeiro registro ou null.
|
|
94
|
+
*/
|
|
95
|
+
primeiro(): Promise<ObjetoDeleguaClasse | null>;
|
|
96
|
+
/**
|
|
97
|
+
* Executa a consulta e retorna a contagem de registros.
|
|
98
|
+
*/
|
|
99
|
+
contar(): Promise<any>;
|
|
100
|
+
/**
|
|
101
|
+
* Executa agregacao SUM.
|
|
102
|
+
*/
|
|
103
|
+
somar(coluna: string): Promise<any>;
|
|
104
|
+
/**
|
|
105
|
+
* Executa agregacao AVG.
|
|
106
|
+
*/
|
|
107
|
+
media(coluna: string): Promise<any>;
|
|
108
|
+
/**
|
|
109
|
+
* Executa agregacao MIN.
|
|
110
|
+
*/
|
|
111
|
+
minimo(coluna: string): Promise<any>;
|
|
112
|
+
/**
|
|
113
|
+
* Executa agregacao MAX.
|
|
114
|
+
*/
|
|
115
|
+
maximo(coluna: string): Promise<any>;
|
|
116
|
+
/**
|
|
117
|
+
* Gera o SQL completo da consulta.
|
|
118
|
+
*/
|
|
119
|
+
gerarSql(): string;
|
|
120
|
+
private criarCondicao;
|
|
121
|
+
private traduzirCondicaoParaSql;
|
|
122
|
+
private executarAgregacao;
|
|
123
|
+
/**
|
|
124
|
+
* Carrega relacionamentos de forma antecipada usando consultas separadas.
|
|
125
|
+
*/
|
|
126
|
+
private carregarRelacionados;
|
|
127
|
+
}
|
|
128
|
+
export {};
|
|
129
|
+
//# sourceMappingURL=construtor-consulta.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"construtor-consulta.d.ts","sourceRoot":"","sources":["../../fontes/construtor-consulta.ts"],"names":[],"mappings":"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"}
|