@designliquido/lincones-sqlite 0.1.1 → 0.2.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/fontes/avaliador-sintatico/avaliador-sintatico.d.ts +1 -1
- package/fontes/comum/babel.config.d.ts +5 -0
- package/fontes/comum/babel.config.js +7 -0
- package/fontes/comum/babel.config.js.map +1 -0
- package/fontes/comum/fontes/avaliador-sintatico/avaliador-sintatico-base.d.ts +8 -5
- package/fontes/comum/fontes/avaliador-sintatico/avaliador-sintatico-base.js +81 -21
- package/fontes/comum/fontes/avaliador-sintatico/avaliador-sintatico-base.js.map +1 -1
- package/fontes/comum/fontes/avaliador-sintatico/avaliador-sintatico-sql-ansi.d.ts +7 -0
- package/fontes/comum/fontes/avaliador-sintatico/avaliador-sintatico-sql-ansi.js +12 -0
- package/fontes/comum/fontes/avaliador-sintatico/avaliador-sintatico-sql-ansi.js.map +1 -0
- package/fontes/comum/fontes/avaliador-sintatico/index.d.ts +1 -0
- package/fontes/comum/fontes/avaliador-sintatico/index.js +1 -0
- package/fontes/comum/fontes/avaliador-sintatico/index.js.map +1 -1
- package/fontes/comum/fontes/comandos/atualizar.d.ts +3 -9
- package/fontes/comum/fontes/comandos/atualizar.js.map +1 -1
- package/fontes/comum/fontes/comandos/criar.d.ts +2 -1
- package/fontes/comum/fontes/comandos/criar.js +2 -1
- package/fontes/comum/fontes/comandos/criar.js.map +1 -1
- package/fontes/comum/fontes/comandos/excluir.d.ts +3 -2
- package/fontes/comum/fontes/comandos/excluir.js.map +1 -1
- package/fontes/comum/fontes/comandos/inserir.d.ts +3 -3
- package/fontes/comum/fontes/comandos/inserir.js.map +1 -1
- package/fontes/comum/fontes/construtos/coluna-e-valor.d.ts +8 -0
- package/fontes/comum/fontes/construtos/coluna-e-valor.js +16 -0
- package/fontes/comum/fontes/construtos/coluna-e-valor.js.map +1 -0
- package/fontes/comum/fontes/construtos/coluna.d.ts +3 -1
- package/fontes/comum/fontes/construtos/coluna.js +21 -1
- package/fontes/comum/fontes/construtos/coluna.js.map +1 -1
- package/fontes/comum/fontes/construtos/condicao.d.ts +6 -4
- package/fontes/comum/fontes/construtos/condicao.js +11 -1
- package/fontes/comum/fontes/construtos/condicao.js.map +1 -1
- package/fontes/comum/fontes/construtos/construto.d.ts +3 -0
- package/fontes/comum/fontes/construtos/construto.js +7 -0
- package/fontes/comum/fontes/construtos/construto.js.map +1 -0
- package/fontes/comum/fontes/construtos/index.d.ts +8 -0
- package/fontes/comum/fontes/construtos/index.js +8 -0
- package/fontes/comum/fontes/construtos/index.js.map +1 -1
- package/fontes/comum/fontes/construtos/literal.d.ts +7 -0
- package/fontes/comum/fontes/construtos/literal.js +16 -0
- package/fontes/comum/fontes/construtos/literal.js.map +1 -0
- package/fontes/comum/fontes/construtos/operacao-alteracao-tabela.d.ts +3 -1
- package/fontes/comum/fontes/construtos/operacao-alteracao-tabela.js +6 -1
- package/fontes/comum/fontes/construtos/operacao-alteracao-tabela.js.map +1 -1
- package/fontes/comum/fontes/construtos/parametro-anonimo.d.ts +4 -0
- package/fontes/comum/fontes/construtos/parametro-anonimo.js +11 -0
- package/fontes/comum/fontes/construtos/parametro-anonimo.js.map +1 -0
- package/fontes/comum/fontes/construtos/parametro-nomeado.d.ts +6 -0
- package/fontes/comum/fontes/construtos/parametro-nomeado.js +15 -0
- package/fontes/comum/fontes/construtos/parametro-nomeado.js.map +1 -0
- package/fontes/comum/fontes/construtos/referencia-coluna.d.ts +6 -0
- package/fontes/comum/fontes/construtos/referencia-coluna.js +15 -0
- package/fontes/comum/fontes/construtos/referencia-coluna.js.map +1 -0
- package/fontes/comum/fontes/construtos/restricao.d.ts +3 -1
- package/fontes/comum/fontes/construtos/restricao.js +24 -1
- package/fontes/comum/fontes/construtos/restricao.js.map +1 -1
- package/fontes/comum/fontes/index.d.ts +7 -0
- package/fontes/comum/{index.js → fontes/index.js} +7 -8
- package/fontes/comum/fontes/index.js.map +1 -0
- package/fontes/comum/fontes/lexador/index.d.ts +1 -0
- package/fontes/comum/fontes/lexador/index.js +1 -0
- package/fontes/comum/fontes/lexador/index.js.map +1 -1
- package/fontes/comum/fontes/lexador/lexador-base.d.ts +26 -0
- package/fontes/comum/fontes/lexador/lexador-base.js +211 -0
- package/fontes/comum/fontes/lexador/lexador-base.js.map +1 -0
- package/fontes/comum/fontes/lexador/lexador-sql-ansi.d.ts +11 -0
- package/fontes/comum/fontes/lexador/lexador-sql-ansi.js +47 -0
- package/fontes/comum/fontes/lexador/lexador-sql-ansi.js.map +1 -0
- package/fontes/comum/fontes/lexador/lexador.d.ts +2 -23
- package/fontes/comum/fontes/lexador/lexador.js +5 -198
- package/fontes/comum/fontes/lexador/lexador.js.map +1 -1
- package/fontes/comum/fontes/lexador/palavras-reservadas/index.d.ts +2 -0
- package/fontes/comum/fontes/lexador/palavras-reservadas/index.js +19 -0
- package/fontes/comum/fontes/lexador/palavras-reservadas/index.js.map +1 -0
- package/fontes/comum/fontes/{palavras-reservadas.d.ts → lexador/palavras-reservadas/lincones.d.ts} +1 -0
- package/fontes/comum/fontes/{palavras-reservadas.js → lexador/palavras-reservadas/lincones.js} +3 -2
- package/fontes/comum/fontes/lexador/palavras-reservadas/lincones.js.map +1 -0
- package/fontes/comum/fontes/lexador/palavras-reservadas/sql.d.ts +37 -0
- package/fontes/comum/fontes/lexador/palavras-reservadas/sql.js +43 -0
- package/fontes/comum/fontes/lexador/palavras-reservadas/sql.js.map +1 -0
- package/fontes/comum/fontes/{tipos-de-simbolos.d.ts → tipos-de-simbolos/index.d.ts} +3 -0
- package/fontes/comum/fontes/{tipos-de-simbolos.js → tipos-de-simbolos/index.js} +4 -1
- package/fontes/comum/fontes/tipos-de-simbolos/index.js.map +1 -0
- package/fontes/comum/fontes/tradutor/index.d.ts +2 -32
- package/fontes/comum/fontes/tradutor/index.js +15 -235
- package/fontes/comum/fontes/tradutor/index.js.map +1 -1
- package/fontes/comum/fontes/tradutor/tradutor-reverso-sql-ansi.d.ts +7 -0
- package/fontes/comum/fontes/tradutor/tradutor-reverso-sql-ansi.js +12 -0
- package/fontes/comum/fontes/tradutor/tradutor-reverso-sql-ansi.js.map +1 -0
- package/fontes/comum/fontes/tradutor/tradutor-sql-ansi.d.ts +33 -0
- package/fontes/comum/fontes/tradutor/tradutor-sql-ansi.js +246 -0
- package/fontes/comum/fontes/tradutor/tradutor-sql-ansi.js.map +1 -0
- package/fontes/comum/testes/avaliador-sintatico.test.js +85 -14
- package/fontes/comum/testes/avaliador-sintatico.test.js.map +1 -1
- package/fontes/comum/testes/construtos.test.js +52 -0
- package/fontes/comum/testes/construtos.test.js.map +1 -0
- package/fontes/comum/testes/lexador-sql-ansi.test.d.ts +1 -0
- package/fontes/comum/testes/lexador-sql-ansi.test.js +83 -0
- package/fontes/comum/testes/lexador-sql-ansi.test.js.map +1 -0
- package/fontes/comum/testes/tradutor-sql-ansi.test.d.ts +1 -0
- package/fontes/comum/testes/{tradutor.test.js → tradutor-sql-ansi.test.js} +29 -25
- package/fontes/comum/testes/tradutor-sql-ansi.test.js.map +1 -0
- package/fontes/infraestrutura/cliente-sqlite.d.ts +1 -1
- package/fontes/infraestrutura/cliente-sqlite.js +10 -9
- package/fontes/infraestrutura/cliente-sqlite.js.map +1 -1
- package/fontes/lincones-sqlite.d.ts +4 -3
- package/fontes/lincones-sqlite.js +5 -4
- package/fontes/lincones-sqlite.js.map +1 -1
- package/fontes/tradutor/index.d.ts +2 -6
- package/fontes/tradutor/index.js +2 -87
- package/fontes/tradutor/index.js.map +1 -1
- package/package.json +1 -1
- package/fontes/comum/fontes/palavras-reservadas.js.map +0 -1
- package/fontes/comum/fontes/tipos-de-simbolos.js.map +0 -1
- package/fontes/comum/index.d.ts +0 -8
- package/fontes/comum/index.js.map +0 -1
- package/fontes/comum/testes/tradutor.test.js.map +0 -1
- /package/fontes/comum/testes/{tradutor.test.d.ts → construtos.test.d.ts} +0 -0
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const avaliador_sintatico_1 = require("../fontes/avaliador-sintatico");
|
|
4
|
+
const construtos_1 = require("../fontes/construtos");
|
|
4
5
|
const lexador_1 = require("../fontes/lexador");
|
|
5
6
|
describe('Avaliador Sintático', () => {
|
|
6
7
|
let lexador;
|
|
@@ -24,7 +25,7 @@ describe('Avaliador Sintático', () => {
|
|
|
24
25
|
});
|
|
25
26
|
it('Excluir em Tabela', () => {
|
|
26
27
|
const codigo = [
|
|
27
|
-
'EXCLUIR clientes ONDE ID = 3;'
|
|
28
|
+
'EXCLUIR EM clientes ONDE ID = 3;'
|
|
28
29
|
];
|
|
29
30
|
const resultadoLexador = lexador.mapear(codigo);
|
|
30
31
|
const resultadoAvaliadorSintatico = avaliadorSintatico.analisar(resultadoLexador);
|
|
@@ -32,9 +33,75 @@ describe('Avaliador Sintático', () => {
|
|
|
32
33
|
expect(resultadoAvaliadorSintatico.comandos).toHaveLength(1);
|
|
33
34
|
expect(resultadoAvaliadorSintatico.erros).toHaveLength(0);
|
|
34
35
|
});
|
|
35
|
-
|
|
36
|
+
describe('Inserir em Tabela', () => {
|
|
37
|
+
it('Trivial', () => {
|
|
38
|
+
const codigo = [
|
|
39
|
+
'INSERIR EM clientes (NOME) VALORES ("Pernalonga")'
|
|
40
|
+
];
|
|
41
|
+
const resultadoLexador = lexador.mapear(codigo);
|
|
42
|
+
const resultadoAvaliadorSintatico = avaliadorSintatico.analisar(resultadoLexador);
|
|
43
|
+
expect(resultadoAvaliadorSintatico).toBeTruthy();
|
|
44
|
+
expect(resultadoAvaliadorSintatico.comandos).toHaveLength(1);
|
|
45
|
+
expect(resultadoAvaliadorSintatico.erros).toHaveLength(0);
|
|
46
|
+
});
|
|
47
|
+
it('Com parâmetros anônimos', () => {
|
|
48
|
+
const codigo = [
|
|
49
|
+
'INSERIR EM clientes (NOME) VALORES (?)'
|
|
50
|
+
];
|
|
51
|
+
const resultadoLexador = lexador.mapear(codigo);
|
|
52
|
+
const resultadoAvaliadorSintatico = avaliadorSintatico.analisar(resultadoLexador);
|
|
53
|
+
expect(resultadoAvaliadorSintatico).toBeTruthy();
|
|
54
|
+
expect(resultadoAvaliadorSintatico.comandos).toHaveLength(1);
|
|
55
|
+
expect(resultadoAvaliadorSintatico.erros).toHaveLength(0);
|
|
56
|
+
});
|
|
57
|
+
});
|
|
58
|
+
describe('Selecionar em Tabela', () => {
|
|
59
|
+
it('Trivial', () => {
|
|
60
|
+
const codigo = [
|
|
61
|
+
'SELECIONAR NOME, EMAIL DE clientes ONDE IDADE = 18;'
|
|
62
|
+
];
|
|
63
|
+
const retornoLexador = lexador.mapear(codigo);
|
|
64
|
+
const retornoAvaliadorSintatico = avaliadorSintatico.analisar(retornoLexador);
|
|
65
|
+
expect(retornoAvaliadorSintatico).toBeTruthy();
|
|
66
|
+
expect(retornoAvaliadorSintatico.comandos).toHaveLength(1);
|
|
67
|
+
expect(retornoAvaliadorSintatico.erros).toHaveLength(0);
|
|
68
|
+
});
|
|
69
|
+
it('Com parâmetros nomeados', () => {
|
|
70
|
+
const codigo = [
|
|
71
|
+
'SELECIONAR NOME, EMAIL DE clientes ONDE IDADE = :idade;'
|
|
72
|
+
];
|
|
73
|
+
const retornoLexador = lexador.mapear(codigo);
|
|
74
|
+
const retornoAvaliadorSintatico = avaliadorSintatico.analisar(retornoLexador);
|
|
75
|
+
expect(retornoAvaliadorSintatico).toBeTruthy();
|
|
76
|
+
expect(retornoAvaliadorSintatico.comandos).toHaveLength(1);
|
|
77
|
+
expect(retornoAvaliadorSintatico.erros).toHaveLength(0);
|
|
78
|
+
const comando = retornoAvaliadorSintatico.comandos[0];
|
|
79
|
+
expect(comando.condicoes).toHaveLength(1);
|
|
80
|
+
const condicao = comando.condicoes[0];
|
|
81
|
+
expect(condicao.esquerda).toBeInstanceOf(construtos_1.ReferenciaColuna);
|
|
82
|
+
expect(condicao.direita).toBeInstanceOf(construtos_1.ParametroNomeado);
|
|
83
|
+
});
|
|
84
|
+
it('Com parâmetros anônimos', () => {
|
|
85
|
+
const codigo = [
|
|
86
|
+
'SELECIONAR NOME, EMAIL DE clientes ONDE IDADE = ?;'
|
|
87
|
+
];
|
|
88
|
+
const retornoLexador = lexador.mapear(codigo);
|
|
89
|
+
const retornoAvaliadorSintatico = avaliadorSintatico.analisar(retornoLexador);
|
|
90
|
+
expect(retornoAvaliadorSintatico).toBeTruthy();
|
|
91
|
+
expect(retornoAvaliadorSintatico.comandos).toHaveLength(1);
|
|
92
|
+
expect(retornoAvaliadorSintatico.erros).toHaveLength(0);
|
|
93
|
+
const comando = retornoAvaliadorSintatico.comandos[0];
|
|
94
|
+
expect(comando.condicoes).toHaveLength(1);
|
|
95
|
+
const condicao = comando.condicoes[0];
|
|
96
|
+
expect(condicao.esquerda).toBeInstanceOf(construtos_1.ReferenciaColuna);
|
|
97
|
+
expect(condicao.direita).toBeInstanceOf(construtos_1.ParametroAnonimo);
|
|
98
|
+
});
|
|
99
|
+
});
|
|
100
|
+
});
|
|
101
|
+
describe('Manipulação de esquemas de tabelas', () => {
|
|
102
|
+
it('Criar Tabela', () => {
|
|
36
103
|
const codigo = [
|
|
37
|
-
'
|
|
104
|
+
'CRIAR TABELA clientes(ID INTEIRO NAO NULO CHAVE PRIMARIA AUTO INCREMENTO, NOME TEXTO(100) NAO NULO, IDADE INTEIRO NAO NULO, EMAIL TEXTO(255) NAO NULO, ATIVO LOGICO NAO NULO);'
|
|
38
105
|
];
|
|
39
106
|
const resultadoLexador = lexador.mapear(codigo);
|
|
40
107
|
const resultadoAvaliadorSintatico = avaliadorSintatico.analisar(resultadoLexador);
|
|
@@ -42,21 +109,25 @@ describe('Avaliador Sintático', () => {
|
|
|
42
109
|
expect(resultadoAvaliadorSintatico.comandos).toHaveLength(1);
|
|
43
110
|
expect(resultadoAvaliadorSintatico.erros).toHaveLength(0);
|
|
44
111
|
});
|
|
45
|
-
it('
|
|
112
|
+
it('Criar Tabela se não existir', () => {
|
|
46
113
|
const codigo = [
|
|
47
|
-
'
|
|
114
|
+
'CRIAR TABELA SE NÃO EXISTIR clientes ( ',
|
|
115
|
+
' ID INTEIRO NAO NULO CHAVE PRIMARIA, ',
|
|
116
|
+
' NOME TEXTO(100) NAO NULO, ',
|
|
117
|
+
' IDADE INTEIRO NAO NULO, ',
|
|
118
|
+
' EMAIL TEXTO(255) NAO NULO, ',
|
|
119
|
+
' ATIVO LOGICO NAO NULO ',
|
|
120
|
+
');'
|
|
48
121
|
];
|
|
49
|
-
const
|
|
50
|
-
const
|
|
51
|
-
expect(
|
|
52
|
-
expect(
|
|
53
|
-
expect(
|
|
122
|
+
const resultadoLexador = lexador.mapear(codigo);
|
|
123
|
+
const resultadoAvaliadorSintatico = avaliadorSintatico.analisar(resultadoLexador);
|
|
124
|
+
expect(resultadoAvaliadorSintatico).toBeTruthy();
|
|
125
|
+
expect(resultadoAvaliadorSintatico.comandos).toHaveLength(1);
|
|
126
|
+
expect(resultadoAvaliadorSintatico.erros).toHaveLength(0);
|
|
54
127
|
});
|
|
55
|
-
|
|
56
|
-
describe('Manipulação de esquemas de tabelas', () => {
|
|
57
|
-
it('Criar Tabela', () => {
|
|
128
|
+
it('Criar Tabela se não existir', () => {
|
|
58
129
|
const codigo = [
|
|
59
|
-
'
|
|
130
|
+
'EXCLUIR TABELA clientes;'
|
|
60
131
|
];
|
|
61
132
|
const resultadoLexador = lexador.mapear(codigo);
|
|
62
133
|
const resultadoAvaliadorSintatico = avaliadorSintatico.analisar(resultadoLexador);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"avaliador-sintatico.test.js","sourceRoot":"","sources":["../../../../fontes/comum/testes/avaliador-sintatico.test.ts"],"names":[],"mappings":";;AAAA,uEAAmE;
|
|
1
|
+
{"version":3,"file":"avaliador-sintatico.test.js","sourceRoot":"","sources":["../../../../fontes/comum/testes/avaliador-sintatico.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const construtos_1 = require("../fontes/construtos");
|
|
4
|
+
const coluna_1 = require("../fontes/construtos/coluna");
|
|
5
|
+
describe('Construtos', () => {
|
|
6
|
+
describe('Coluna', () => {
|
|
7
|
+
it('toString, trivial', () => {
|
|
8
|
+
const coluna = new coluna_1.Coluna('nome', 'texto', undefined, true);
|
|
9
|
+
expect(coluna.toString()).toBe("<Coluna nome=nome tipo=TEXTO nulo=Sim>");
|
|
10
|
+
});
|
|
11
|
+
it('toString, chave primária', () => {
|
|
12
|
+
const coluna = new coluna_1.Coluna('nome', 'texto', undefined, false, true);
|
|
13
|
+
expect(coluna.toString()).toBe("<Coluna nome=nome tipo=TEXTO nulo=Não chave primária;>");
|
|
14
|
+
});
|
|
15
|
+
});
|
|
16
|
+
describe('ColunaEValor', () => {
|
|
17
|
+
it('toString, trivial', () => {
|
|
18
|
+
const colunaEValor = new construtos_1.ColunaEValor(new coluna_1.Coluna('nome', 'texto', undefined, false, true), new construtos_1.Literal('valor'));
|
|
19
|
+
expect(colunaEValor.toString()).toBe("<ColunaEValor coluna=nome valor=<Literal valor=valor tipo presumido=TEXTO>>");
|
|
20
|
+
});
|
|
21
|
+
});
|
|
22
|
+
describe('Condicao', () => {
|
|
23
|
+
it('toString, trivial', () => {
|
|
24
|
+
const condicao = new construtos_1.Condicao(new coluna_1.Coluna('nome', 'texto', undefined, false, true), 'IGUAL', new construtos_1.Literal('teste'));
|
|
25
|
+
expect(condicao.toString()).toBe("<Condição operando esquerdo=<Coluna nome=nome tipo=TEXTO nulo=Não chave primária;> operador=IGUAL operando direito=<Literal valor=teste tipo presumido=TEXTO>>");
|
|
26
|
+
});
|
|
27
|
+
});
|
|
28
|
+
describe('OperacaoAlteracaoTabela', () => {
|
|
29
|
+
it('construtor, tipo inválido', () => {
|
|
30
|
+
expect(() => {
|
|
31
|
+
new construtos_1.OperacaoAlteracaoTabela('INVALIDO', new coluna_1.Coluna('coluna', 'texto'));
|
|
32
|
+
}).toThrow('Tipo de operação de alteração de tabela inválido: INVALIDO');
|
|
33
|
+
});
|
|
34
|
+
it('toString, trivial', () => {
|
|
35
|
+
const operacaoAlteracaoTabela = new construtos_1.OperacaoAlteracaoTabela('ADICIONAR', new coluna_1.Coluna('nova_coluna', 'texto'));
|
|
36
|
+
expect(operacaoAlteracaoTabela.toString()).toBe("<OperaçãoAlteraçãoTabela tipo=ADICIONAR elemento=<Coluna nome=nova_coluna tipo=TEXTO nulo=Não>>");
|
|
37
|
+
});
|
|
38
|
+
});
|
|
39
|
+
describe('Restricao', () => {
|
|
40
|
+
it('toString, trivial', () => {
|
|
41
|
+
const restricao = new construtos_1.Restricao('teste_restricao', 'ÚNICA', 'teste_tabela', [
|
|
42
|
+
'coluna1',
|
|
43
|
+
'coluna2'
|
|
44
|
+
], 'outra_tabela', [
|
|
45
|
+
'coluna3',
|
|
46
|
+
'coluna4'
|
|
47
|
+
]);
|
|
48
|
+
expect(restricao.toString()).toBe("<Restrição nome=teste_restricao tabela=teste_tabela colunas=[coluna1, coluna2] tabela referenciada=outra_tabela colunas referenciadas=[coluna3, coluna4]>");
|
|
49
|
+
});
|
|
50
|
+
});
|
|
51
|
+
});
|
|
52
|
+
//# sourceMappingURL=construtos.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"construtos.test.js","sourceRoot":"","sources":["../../../../fontes/comum/testes/construtos.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const lexador_1 = require("../fontes/lexador");
|
|
4
|
+
describe('Lexador SQL ANSI', () => {
|
|
5
|
+
let lexador;
|
|
6
|
+
beforeEach(() => {
|
|
7
|
+
lexador = new lexador_1.LexadorSqlAnsi();
|
|
8
|
+
});
|
|
9
|
+
describe('mapear()', () => {
|
|
10
|
+
describe('Cenário de sucesso', () => {
|
|
11
|
+
it('Sucesso com código vazio', () => {
|
|
12
|
+
const codigo = [''];
|
|
13
|
+
const resultado = lexador.mapear(codigo);
|
|
14
|
+
expect(resultado).toBeTruthy();
|
|
15
|
+
expect(resultado.simbolos).toHaveLength(0);
|
|
16
|
+
});
|
|
17
|
+
it('Sucesso com código com apenas espaços', () => {
|
|
18
|
+
const codigo = [' '];
|
|
19
|
+
const resultado = lexador.mapear(codigo);
|
|
20
|
+
expect(resultado).toBeTruthy();
|
|
21
|
+
expect(resultado.simbolos).toHaveLength(0);
|
|
22
|
+
});
|
|
23
|
+
it('Sucesso com código repetindo instruções', () => {
|
|
24
|
+
const codigo = [
|
|
25
|
+
'((((((((((((((((((((((((((',
|
|
26
|
+
')))))))))))))))))))))))))',
|
|
27
|
+
'CREATE CREATE CREATE CREATE CREATE CREATE'
|
|
28
|
+
];
|
|
29
|
+
const resultado = lexador.mapear(codigo);
|
|
30
|
+
expect(resultado).toBeTruthy();
|
|
31
|
+
expect(resultado.simbolos).toHaveLength(57);
|
|
32
|
+
});
|
|
33
|
+
it('CREATE TABLE', () => {
|
|
34
|
+
const codigo = ['CREATE TABLE usuarios'];
|
|
35
|
+
const resultado = lexador.mapear(codigo);
|
|
36
|
+
expect(resultado).toBeTruthy();
|
|
37
|
+
expect(resultado.simbolos).toHaveLength(3);
|
|
38
|
+
});
|
|
39
|
+
it('UPDATE', () => {
|
|
40
|
+
const codigo = ['UPDATE usuarios'];
|
|
41
|
+
const resultado = lexador.mapear(codigo);
|
|
42
|
+
expect(resultado).toBeTruthy();
|
|
43
|
+
expect(resultado.simbolos).toHaveLength(2);
|
|
44
|
+
});
|
|
45
|
+
describe('Casos concretos', () => {
|
|
46
|
+
it('CREATE TABLE Clientes', () => {
|
|
47
|
+
const codigo = [
|
|
48
|
+
'CREATE TABLE clientes(id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, nome VARCHAR(100) NOT NULL, idade INTEIRO NAO NULO, email VARCHAR(255) NOT NULL, ativo BOOLEAN NOT NULL)'
|
|
49
|
+
];
|
|
50
|
+
const resultado = lexador.mapear(codigo);
|
|
51
|
+
expect(resultado).toBeTruthy();
|
|
52
|
+
expect(resultado.simbolos).toHaveLength(38);
|
|
53
|
+
});
|
|
54
|
+
it('CRUD', () => {
|
|
55
|
+
const codigo = [
|
|
56
|
+
'INSERT INTO clientes VALUES(1, "João", 20, "joao@gmail.com", TRUE)',
|
|
57
|
+
'INSERT INTO clientes VALUES(2, "Carlos", 23, "carlos@gmail.com", TRUE)',
|
|
58
|
+
'INSERT INTO clientes VALUES(3, "Thiago", 40, "thiago@gmail.com", TRUE)',
|
|
59
|
+
'INSERT INTO clientes VALUES(4, "Jose", 44, "jose@gmail.com", TRUE)'
|
|
60
|
+
];
|
|
61
|
+
const resultado = lexador.mapear(codigo);
|
|
62
|
+
expect(resultado).toBeTruthy();
|
|
63
|
+
expect(resultado.simbolos).toHaveLength(60);
|
|
64
|
+
});
|
|
65
|
+
it('Selecionar', () => {
|
|
66
|
+
const codigo = ['SELECT * FROM clientes'];
|
|
67
|
+
const resultado = lexador.mapear(codigo);
|
|
68
|
+
expect(resultado).toBeTruthy();
|
|
69
|
+
expect(resultado.simbolos).toHaveLength(4);
|
|
70
|
+
});
|
|
71
|
+
it('Criar Tabela Clientes', () => {
|
|
72
|
+
const codigo = [
|
|
73
|
+
'CREATE TABLE clientes(id INTEGER NOT NULL PRIMARY KEY, nome VARCHAR(100) NOT NULL, idade INTEGER NOT NULL, email VARCHAR(255) NOT NULL, ativo BOOLEAN NOT NULL);'
|
|
74
|
+
];
|
|
75
|
+
const resultado = lexador.mapear(codigo);
|
|
76
|
+
expect(resultado).toBeTruthy();
|
|
77
|
+
expect(resultado.simbolos).toHaveLength(38);
|
|
78
|
+
});
|
|
79
|
+
});
|
|
80
|
+
});
|
|
81
|
+
});
|
|
82
|
+
});
|
|
83
|
+
//# sourceMappingURL=lexador-sql-ansi.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lexador-sql-ansi.test.js","sourceRoot":"","sources":["../../../../fontes/comum/testes/lexador-sql-ansi.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -22,9 +22,7 @@ describe('Tradutor (SQL ANSI)', () => {
|
|
|
22
22
|
const retornoAvaliadorSintatico = avaliadorSintatico.analisar(retornoLexador);
|
|
23
23
|
const resultado = tradutor.traduzir(retornoAvaliadorSintatico.comandos);
|
|
24
24
|
expect(resultado).toBeTruthy();
|
|
25
|
-
expect(resultado).toContain('CREATE');
|
|
26
|
-
expect(resultado).toContain('TABLE');
|
|
27
|
-
expect(resultado).toContain('clientes');
|
|
25
|
+
expect(resultado).toContain('CREATE TABLE clientes');
|
|
28
26
|
expect(resultado).toContain('email');
|
|
29
27
|
expect(resultado).toContain('VARCHAR');
|
|
30
28
|
});
|
|
@@ -37,11 +35,8 @@ describe('Tradutor (SQL ANSI)', () => {
|
|
|
37
35
|
const retornoAvaliadorSintatico = avaliadorSintatico.analisar(retornoLexador);
|
|
38
36
|
const resultado = tradutor.traduzir(retornoAvaliadorSintatico.comandos);
|
|
39
37
|
expect(resultado).toBeTruthy();
|
|
40
|
-
expect(resultado).toContain('ALTER');
|
|
41
|
-
expect(resultado).toContain('
|
|
42
|
-
expect(resultado).toContain('clientes');
|
|
43
|
-
expect(resultado).toContain('ADD');
|
|
44
|
-
expect(resultado).toContain('COLUMN');
|
|
38
|
+
expect(resultado).toContain('ALTER TABLE clientes');
|
|
39
|
+
expect(resultado).toContain('ADD COLUMN');
|
|
45
40
|
expect(resultado).toContain('email');
|
|
46
41
|
expect(resultado).toContain('VARCHAR(120)');
|
|
47
42
|
});
|
|
@@ -56,14 +51,23 @@ describe('Tradutor (SQL ANSI)', () => {
|
|
|
56
51
|
const retornoAvaliadorSintatico = avaliadorSintatico.analisar(retornoLexador);
|
|
57
52
|
const resultado = tradutor.traduzir(retornoAvaliadorSintatico.comandos);
|
|
58
53
|
expect(resultado).toBeTruthy();
|
|
59
|
-
expect(resultado).toContain('ALTER');
|
|
60
|
-
expect(resultado).toContain('
|
|
61
|
-
expect(resultado).toContain('pedidos');
|
|
62
|
-
expect(resultado).toContain('ADD');
|
|
63
|
-
expect(resultado).toContain('CONSTRAINT');
|
|
64
|
-
expect(resultado).toContain('chave_estrang');
|
|
54
|
+
expect(resultado).toContain('ALTER TABLE pedidos');
|
|
55
|
+
expect(resultado).toContain('ADD CONSTRAINT chave_estrang');
|
|
65
56
|
expect(resultado).toContain('FOREIGN KEY');
|
|
66
57
|
});
|
|
58
|
+
it('Alteração de coluna', () => {
|
|
59
|
+
const codigo = [
|
|
60
|
+
'ALTERAR TABELA clientes ALTERAR COLUNA email TEXTO(120)'
|
|
61
|
+
];
|
|
62
|
+
const retornoLexador = lexador.mapear(codigo);
|
|
63
|
+
const retornoAvaliadorSintatico = avaliadorSintatico.analisar(retornoLexador);
|
|
64
|
+
const resultado = tradutor.traduzir(retornoAvaliadorSintatico.comandos);
|
|
65
|
+
expect(resultado).toBeTruthy();
|
|
66
|
+
expect(resultado).toContain('ALTER TABLE clientes');
|
|
67
|
+
expect(resultado).toContain('ALTER COLUMN');
|
|
68
|
+
expect(resultado).toContain('email');
|
|
69
|
+
expect(resultado).toContain('VARCHAR(120)');
|
|
70
|
+
});
|
|
67
71
|
});
|
|
68
72
|
it('Atualizar', () => {
|
|
69
73
|
const codigo = [
|
|
@@ -73,17 +77,16 @@ describe('Tradutor (SQL ANSI)', () => {
|
|
|
73
77
|
const retornoAvaliadorSintatico = avaliadorSintatico.analisar(retornoLexador);
|
|
74
78
|
const resultado = tradutor.traduzir(retornoAvaliadorSintatico.comandos);
|
|
75
79
|
expect(resultado).toBeTruthy();
|
|
76
|
-
expect(resultado).toContain('UPDATE');
|
|
77
|
-
expect(resultado).toContain('clientes');
|
|
80
|
+
expect(resultado).toContain('UPDATE clientes');
|
|
78
81
|
expect(resultado).toContain('SET');
|
|
79
82
|
expect(resultado).toContain('NOME');
|
|
80
83
|
expect(resultado).toContain('Pernalonga');
|
|
81
84
|
expect(resultado).toContain('IDADE');
|
|
82
85
|
expect(resultado).toContain('18');
|
|
83
86
|
expect(resultado).toContain('ATIVO');
|
|
84
|
-
expect(resultado).toContain('
|
|
87
|
+
expect(resultado).toContain('TRUE');
|
|
85
88
|
expect(resultado).toContain('CASADO');
|
|
86
|
-
expect(resultado).toContain('
|
|
89
|
+
expect(resultado).toContain('FALSE');
|
|
87
90
|
expect(resultado).toContain('WHERE');
|
|
88
91
|
expect(resultado).toContain('ID');
|
|
89
92
|
expect(resultado).toContain('=');
|
|
@@ -91,26 +94,27 @@ describe('Tradutor (SQL ANSI)', () => {
|
|
|
91
94
|
});
|
|
92
95
|
it('Inserir', () => {
|
|
93
96
|
const codigo = [
|
|
94
|
-
'INSERIR EM clientes (NOME) VALORES ("Pernalonga")'
|
|
97
|
+
'INSERIR EM clientes (NOME, IDADE, ATIVO, EMAIL) VALORES ("Pernalonga", 18, verdadeiro, "pernalonga@warnerbros.com")'
|
|
95
98
|
];
|
|
96
99
|
const retornoLexador = lexador.mapear(codigo);
|
|
97
100
|
const retornoAvaliadorSintatico = avaliadorSintatico.analisar(retornoLexador);
|
|
98
101
|
const resultado = tradutor.traduzir(retornoAvaliadorSintatico.comandos);
|
|
99
102
|
expect(resultado).toBeTruthy();
|
|
100
|
-
expect(resultado).toContain('INSERT');
|
|
101
|
-
expect(resultado).toContain('INTO');
|
|
103
|
+
expect(resultado).toContain('INSERT INTO');
|
|
102
104
|
expect(resultado).toContain('VALUES');
|
|
105
|
+
expect(resultado).toContain('Pernalonga');
|
|
106
|
+
expect(resultado).toContain('18');
|
|
107
|
+
expect(resultado).toContain('TRUE');
|
|
103
108
|
});
|
|
104
109
|
it('Excluir', () => {
|
|
105
110
|
const codigo = [
|
|
106
|
-
'EXCLUIR clientes ONDE ID = 2'
|
|
111
|
+
'EXCLUIR EM clientes ONDE ID = 2'
|
|
107
112
|
];
|
|
108
113
|
const retornoLexador = lexador.mapear(codigo);
|
|
109
114
|
const retornoAvaliadorSintatico = avaliadorSintatico.analisar(retornoLexador);
|
|
110
115
|
const resultado = tradutor.traduzir(retornoAvaliadorSintatico.comandos);
|
|
111
116
|
expect(resultado).toBeTruthy();
|
|
112
|
-
expect(resultado).toContain('DELETE');
|
|
113
|
-
expect(resultado).toContain('FROM');
|
|
117
|
+
expect(resultado).toContain('DELETE FROM');
|
|
114
118
|
expect(resultado).toContain('clientes');
|
|
115
119
|
expect(resultado).toContain('WHERE');
|
|
116
120
|
expect(resultado).toContain('ID = 2');
|
|
@@ -130,4 +134,4 @@ describe('Tradutor (SQL ANSI)', () => {
|
|
|
130
134
|
});
|
|
131
135
|
});
|
|
132
136
|
});
|
|
133
|
-
//# sourceMappingURL=tradutor.test.js.map
|
|
137
|
+
//# sourceMappingURL=tradutor-sql-ansi.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tradutor-sql-ansi.test.js","sourceRoot":"","sources":["../../../../fontes/comum/testes/tradutor-sql-ansi.test.ts"],"names":[],"mappings":";;AAAA,uEAAmE;AACnE,+CAA4C;AAC5C,iDAAqD;AAErD,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;IACjC,IAAI,OAAgB,CAAC;IACrB,IAAI,kBAAsC,CAAC;IAC3C,IAAI,QAAyB,CAAC;IAE9B,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;QACxB,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;YAChC,UAAU,CAAC,GAAG,EAAE;gBACZ,OAAO,GAAG,IAAI,iBAAO,EAAE,CAAC;gBACxB,kBAAkB,GAAG,IAAI,wCAAkB,EAAE,CAAC;gBAC9C,QAAQ,GAAG,IAAI,0BAAe,EAAE,CAAC;YACrC,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;gBACb,MAAM,MAAM,GAAG;oBACX,qEAAqE;iBACxE,CAAC;gBACF,MAAM,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBAC9C,MAAM,yBAAyB,GAC3B,kBAAkB,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;gBAChD,MAAM,SAAS,GAAG,QAAQ,CAAC,QAAQ,CAAC,yBAAyB,CAAC,QAAQ,CAAC,CAAC;gBAExE,MAAM,CAAC,SAAS,CAAC,CAAC,UAAU,EAAE,CAAC;gBAC/B,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,uBAAuB,CAAC,CAAC;gBACrD,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;gBACrC,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;YAC3C,CAAC,CAAC,CAAC;YAEH,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;gBAC5B,EAAE,CAAC,kBAAkB,EAAE,GAAG,EAAE;oBACxB,MAAM,MAAM,GAAG;wBACX,2DAA2D;qBAC9D,CAAC;oBACF,MAAM,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;oBAC9C,MAAM,yBAAyB,GAC3B,kBAAkB,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;oBAChD,MAAM,SAAS,GAAG,QAAQ,CAAC,QAAQ,CAAC,yBAAyB,CAAC,QAAQ,CAAC,CAAC;oBACxE,MAAM,CAAC,SAAS,CAAC,CAAC,UAAU,EAAE,CAAC;oBAC/B,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,sBAAsB,CAAC,CAAC;oBACpD,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;oBAC1C,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;oBACrC,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;gBAChD,CAAC,CAAC,CAAC;gBAEH,EAAE,CAAC,qBAAqB,EAAE,GAAG,EAAE;oBAC3B,MAAM,MAAM,GAAG;wBACX,yBAAyB;wBACzB,oCAAoC;wBACpC,iCAAiC;wBACjC,2BAA2B;qBAC9B,CAAC;oBACF,MAAM,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;oBAC9C,MAAM,yBAAyB,GAC3B,kBAAkB,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;oBAChD,MAAM,SAAS,GAAG,QAAQ,CAAC,QAAQ,CAAC,yBAAyB,CAAC,QAAQ,CAAC,CAAC;oBACxE,MAAM,CAAC,SAAS,CAAC,CAAC,UAAU,EAAE,CAAC;oBAC/B,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAC;oBACnD,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,8BAA8B,CAAC,CAAC;oBAC5D,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;gBAC/C,CAAC,CAAC,CAAC;gBAEH,EAAE,CAAC,qBAAqB,EAAE,GAAG,EAAE;oBAC3B,MAAM,MAAM,GAAG;wBACX,yDAAyD;qBAC5D,CAAC;oBACF,MAAM,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;oBAC9C,MAAM,yBAAyB,GAC3B,kBAAkB,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;oBAChD,MAAM,SAAS,GAAG,QAAQ,CAAC,QAAQ,CAAC,yBAAyB,CAAC,QAAQ,CAAC,CAAC;oBACxE,MAAM,CAAC,SAAS,CAAC,CAAC,UAAU,EAAE,CAAC;oBAC/B,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,sBAAsB,CAAC,CAAC;oBACpD,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;oBAC5C,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;oBACrC,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;gBAChD,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,WAAW,EAAE,GAAG,EAAE;gBACjB,MAAM,MAAM,GAAG;oBACX,8GAA8G;iBACjH,CAAC;gBACF,MAAM,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBAC9C,MAAM,yBAAyB,GAC3B,kBAAkB,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;gBAChD,MAAM,SAAS,GAAG,QAAQ,CAAC,QAAQ,CAAC,yBAAyB,CAAC,QAAQ,CAAC,CAAC;gBACxE,MAAM,CAAC,SAAS,CAAC,CAAC,UAAU,EAAE,CAAC;gBAC/B,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;gBAC/C,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;gBACnC,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;gBACpC,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;gBAC1C,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;gBACrC,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;gBAClC,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;gBACrC,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;gBACpC,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;gBACtC,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;gBACrC,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;gBACrC,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;gBAClC,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;gBACjC,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YACtC,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE;gBACf,MAAM,MAAM,GAAG;oBACX,qHAAqH;iBACxH,CAAC;gBACF,MAAM,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBAC9C,MAAM,yBAAyB,GAC3B,kBAAkB,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;gBAChD,MAAM,SAAS,GAAG,QAAQ,CAAC,QAAQ,CAAC,yBAAyB,CAAC,QAAQ,CAAC,CAAC;gBACxE,MAAM,CAAC,SAAS,CAAC,CAAC,UAAU,EAAE,CAAC;gBAC/B,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;gBAC3C,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;gBACtC,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;gBAC1C,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;gBAClC,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YACxC,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE;gBACf,MAAM,MAAM,GAAG;oBACX,iCAAiC;iBACpC,CAAC;gBACF,MAAM,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBAC9C,MAAM,yBAAyB,GAC3B,kBAAkB,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;gBAChD,MAAM,SAAS,GAAG,QAAQ,CAAC,QAAQ,CAAC,yBAAyB,CAAC,QAAQ,CAAC,CAAC;gBACxE,MAAM,CAAC,SAAS,CAAC,CAAC,UAAU,EAAE,CAAC;gBAC/B,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;gBAC3C,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;gBACxC,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;gBACrC,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;YAC1C,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,YAAY,EAAE,GAAG,EAAE;gBAClB,MAAM,MAAM,GAAG;oBACX,qDAAqD;iBACxD,CAAC;gBACF,MAAM,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBAC9C,MAAM,yBAAyB,GAC3B,kBAAkB,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;gBAChD,MAAM,SAAS,GAAG,QAAQ,CAAC,QAAQ,CAAC,yBAAyB,CAAC,QAAQ,CAAC,CAAC;gBACxE,MAAM,CAAC,SAAS,CAAC,CAAC,UAAU,EAAE,CAAC;gBAC/B,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;gBACtC,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;gBACpC,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;YACzC,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
|
|
@@ -5,6 +5,6 @@ export declare class ClienteSQLite {
|
|
|
5
5
|
origemDados: string;
|
|
6
6
|
constructor(origemDados?: string | null);
|
|
7
7
|
abrir(): Promise<void>;
|
|
8
|
-
executarComando(comando: string): Promise<any>;
|
|
8
|
+
executarComando(comando: string, parametros?: any[]): Promise<any>;
|
|
9
9
|
private executarComandoSelecao;
|
|
10
10
|
}
|
|
@@ -64,18 +64,19 @@ class ClienteSQLite {
|
|
|
64
64
|
this.instanciaBancoDeDados = database;
|
|
65
65
|
console.log('Conectado ao banco de dados SQLite.');
|
|
66
66
|
}
|
|
67
|
-
async executarComando(comando) {
|
|
67
|
+
async executarComando(comando, parametros = []) {
|
|
68
68
|
if (comando.startsWith('SELECT')) {
|
|
69
|
-
return await this.executarComandoSelecao(comando);
|
|
69
|
+
return await this.executarComandoSelecao(comando, parametros);
|
|
70
70
|
}
|
|
71
|
-
return await this.instanciaBancoDeDados.run(comando,
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
}
|
|
71
|
+
return await this.instanciaBancoDeDados.run(comando, parametros);
|
|
72
|
+
// (erro: Error) => {
|
|
73
|
+
// if (erro) {
|
|
74
|
+
// console.log(erro.message);
|
|
75
|
+
// }
|
|
76
|
+
// });
|
|
76
77
|
}
|
|
77
|
-
async executarComandoSelecao(comando) {
|
|
78
|
-
return await this.instanciaBancoDeDados.all(comando);
|
|
78
|
+
async executarComandoSelecao(comando, parametros = []) {
|
|
79
|
+
return await this.instanciaBancoDeDados.all(comando, parametros);
|
|
79
80
|
}
|
|
80
81
|
}
|
|
81
82
|
exports.ClienteSQLite = ClienteSQLite;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cliente-sqlite.js","sourceRoot":"","sources":["../../../fontes/infraestrutura/cliente-sqlite.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,mDAAqC;AAErC,+CAAiC;AACjC,sDAA8B;AAE9B,MAAa,aAAa;IAKtB,0DAA0D;IAC1D,oCAAoC;IACpC,4CAA4C;IAC5C,qDAAqD;IACrD,+CAA+C;IAC/C,YAAY,cAA6B,IAAI;QACzC,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QACjC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QAExB,IAAI,WAAW,KAAK,UAAU,IAAI,WAAW,KAAK,IAAI,EAAE,CAAC;YACrD,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;QACnE,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;QAClC,CAAC;IACL,CAAC;IAEM,KAAK,CAAC,KAAK;QACd,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC;YAC/B,QAAQ,EAAE,IAAI,CAAC,WAAW;YAC1B,MAAM,EAAE,iBAAO,CAAC,QAAQ;SAC3B,CAAC,CAAC;QACH,IAAI,CAAC,qBAAqB,GAAG,QAAQ,CAAC;QACtC,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;IACvD,CAAC;IAEM,KAAK,CAAC,eAAe,CAAC,OAAe;
|
|
1
|
+
{"version":3,"file":"cliente-sqlite.js","sourceRoot":"","sources":["../../../fontes/infraestrutura/cliente-sqlite.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,mDAAqC;AAErC,+CAAiC;AACjC,sDAA8B;AAE9B,MAAa,aAAa;IAKtB,0DAA0D;IAC1D,oCAAoC;IACpC,4CAA4C;IAC5C,qDAAqD;IACrD,+CAA+C;IAC/C,YAAY,cAA6B,IAAI;QACzC,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QACjC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QAExB,IAAI,WAAW,KAAK,UAAU,IAAI,WAAW,KAAK,IAAI,EAAE,CAAC;YACrD,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;QACnE,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;QAClC,CAAC;IACL,CAAC;IAEM,KAAK,CAAC,KAAK;QACd,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC;YAC/B,QAAQ,EAAE,IAAI,CAAC,WAAW;YAC1B,MAAM,EAAE,iBAAO,CAAC,QAAQ;SAC3B,CAAC,CAAC;QACH,IAAI,CAAC,qBAAqB,GAAG,QAAQ,CAAC;QACtC,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;IACvD,CAAC;IAEM,KAAK,CAAC,eAAe,CAAC,OAAe,EAAE,aAAoB,EAAE;QAChE,IAAI,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC/B,OAAO,MAAM,IAAI,CAAC,sBAAsB,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QAClE,CAAC;QAED,OAAO,MAAM,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QAC7D,qBAAqB;QACrB,cAAc;QACd,iCAAiC;QACjC,IAAI;QACR,MAAM;IACV,CAAC;IAEO,KAAK,CAAC,sBAAsB,CAAC,OAAe,EAAE,aAAoB,EAAE;QACxE,OAAO,MAAM,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IACrE,CAAC;CACJ;AA9CD,sCA8CC"}
|
|
@@ -10,10 +10,11 @@ export declare class LinconesSQLite {
|
|
|
10
10
|
clienteSQLite: ClienteSQLite;
|
|
11
11
|
constructor();
|
|
12
12
|
/**
|
|
13
|
-
*
|
|
13
|
+
* Traduz um comando de LinConEs para SQL e executa no banco de dados SQLite.
|
|
14
14
|
* @param _ Normalmente a instância do interpretador Delégua.
|
|
15
|
-
* @param comando
|
|
15
|
+
* @param comando O comando em LinConEs a ser traduzido e executado.
|
|
16
|
+
* @param parametros Parâmetros adicionais para o comando, se necessário.
|
|
16
17
|
* @returns
|
|
17
18
|
*/
|
|
18
|
-
executar(_: any, comando: string): Promise<RetornoComando>;
|
|
19
|
+
executar(_: any, comando: string, parametros?: any[]): Promise<RetornoComando>;
|
|
19
20
|
}
|
|
@@ -14,19 +14,20 @@ class LinconesSQLite {
|
|
|
14
14
|
this.clienteSQLite = new cliente_sqlite_1.ClienteSQLite();
|
|
15
15
|
}
|
|
16
16
|
/**
|
|
17
|
-
*
|
|
17
|
+
* Traduz um comando de LinConEs para SQL e executa no banco de dados SQLite.
|
|
18
18
|
* @param _ Normalmente a instância do interpretador Delégua.
|
|
19
|
-
* @param comando
|
|
19
|
+
* @param comando O comando em LinConEs a ser traduzido e executado.
|
|
20
|
+
* @param parametros Parâmetros adicionais para o comando, se necessário.
|
|
20
21
|
* @returns
|
|
21
22
|
*/
|
|
22
|
-
async executar(_, comando) {
|
|
23
|
+
async executar(_, comando, parametros = []) {
|
|
23
24
|
const resultadoLexador = this.lexador.mapear([comando]);
|
|
24
25
|
const resultadoAvaliacaoSintatica = this.avaliadorSintatico.analisar(resultadoLexador);
|
|
25
26
|
const resultadoTraducao = this.tradutor.traduzir(resultadoAvaliacaoSintatica.comandos);
|
|
26
27
|
if (resultadoAvaliacaoSintatica.comandos.length <= 0) {
|
|
27
28
|
return new infraestrutura_1.RetornoComando(null);
|
|
28
29
|
}
|
|
29
|
-
const resultadoExecucao = await this.clienteSQLite.executarComando(resultadoTraducao);
|
|
30
|
+
const resultadoExecucao = await this.clienteSQLite.executarComando(resultadoTraducao, parametros);
|
|
30
31
|
const retorno = new infraestrutura_1.RetornoComando(resultadoExecucao);
|
|
31
32
|
return retorno;
|
|
32
33
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lincones-sqlite.js","sourceRoot":"","sources":["../../fontes/lincones-sqlite.ts"],"names":[],"mappings":";;;AAAA,yCAA4C;AAC5C,4EAAwE;AACxE,oDAAiD;AACjD,oEAAgE;AAChE,qDAAkD;AAElD,MAAa,cAAc;IAMvB;QACI,IAAI,CAAC,OAAO,GAAG,IAAI,iBAAO,EAAE,CAAC;QAC7B,IAAI,CAAC,kBAAkB,GAAG,IAAI,wCAAkB,EAAE,CAAC;QACnD,IAAI,CAAC,QAAQ,GAAG,IAAI,yBAAc,EAAE,CAAC;QACrC,IAAI,CAAC,aAAa,GAAG,IAAI,8BAAa,EAAE,CAAC;IAC7C,CAAC;IAED
|
|
1
|
+
{"version":3,"file":"lincones-sqlite.js","sourceRoot":"","sources":["../../fontes/lincones-sqlite.ts"],"names":[],"mappings":";;;AAAA,yCAA4C;AAC5C,4EAAwE;AACxE,oDAAiD;AACjD,oEAAgE;AAChE,qDAAkD;AAElD,MAAa,cAAc;IAMvB;QACI,IAAI,CAAC,OAAO,GAAG,IAAI,iBAAO,EAAE,CAAC;QAC7B,IAAI,CAAC,kBAAkB,GAAG,IAAI,wCAAkB,EAAE,CAAC;QACnD,IAAI,CAAC,QAAQ,GAAG,IAAI,yBAAc,EAAE,CAAC;QACrC,IAAI,CAAC,aAAa,GAAG,IAAI,8BAAa,EAAE,CAAC;IAC7C,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,QAAQ,CAAC,CAAM,EAAE,OAAe,EAAE,aAAoB,EAAE;QAC1D,MAAM,gBAAgB,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;QACxD,MAAM,2BAA2B,GAAG,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;QACvF,MAAM,iBAAiB,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,2BAA2B,CAAC,QAAQ,CAAC,CAAC;QAEvF,IAAI,2BAA2B,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;YACnD,OAAO,IAAI,+BAAc,CAAC,IAAI,CAAC,CAAC;QACpC,CAAC;QAED,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,iBAAiB,EAAE,UAAU,CAAC,CAAC;QAClG,MAAM,OAAO,GAAG,IAAI,+BAAc,CAAC,iBAAiB,CAAC,CAAC;QAEtD,OAAO,OAAO,CAAC;IACnB,CAAC;CACJ;AAlCD,wCAkCC"}
|
|
@@ -1,14 +1,10 @@
|
|
|
1
1
|
import { Coluna } from '../comum/fontes/construtos';
|
|
2
|
-
import {
|
|
3
|
-
import { TradutorSqlAnsi } from '../comum';
|
|
2
|
+
import { Comando, Criar } from '../comum/fontes/comandos';
|
|
3
|
+
import { TradutorSqlAnsi } from '../comum/fontes/tradutor/tradutor-sql-ansi';
|
|
4
4
|
export declare class TradutorSqLite extends TradutorSqlAnsi {
|
|
5
5
|
traduzirOperador(operador: string): boolean | "=";
|
|
6
|
-
traduzirComandoAtualizar(comandoAtualizar: Atualizar): string;
|
|
7
6
|
traduzirColuna(coluna: Coluna): string;
|
|
8
7
|
traduzirComandoCriar(comandoCriar: Criar): string;
|
|
9
|
-
traduzirComandoExcluir(comandoExcluir: Excluir): string;
|
|
10
|
-
traduzirComandoInserir(comandoInserir: Inserir): string;
|
|
11
|
-
traduzirComandoSelecionar(comandoSelecionar: Selecionar): string;
|
|
12
8
|
dicionarioComandos: {
|
|
13
9
|
Alterar: any;
|
|
14
10
|
Atualizar: any;
|