blendb issueshttps://gitlab.c3sl.ufpr.br/c3sl/blendb/-/issues2019-09-12T14:42:00Zhttps://gitlab.c3sl.ufpr.br/c3sl/blendb/-/issues/108Adionar Logs ao Blendb2019-09-12T14:42:00ZLucas Fernandes de OliveiraAdionar Logs ao BlendbO Blendb não gera nenhum arquivo de log o que dificulta encontrar problemas.
Criar uma ferramenta que gere arquivos de log.
Devem existir diversos níveis de log. Pode ser utilizado o pacote log do npm.
A principio os logs podem ser ge...O Blendb não gera nenhum arquivo de log o que dificulta encontrar problemas.
Criar uma ferramenta que gere arquivos de log.
Devem existir diversos níveis de log. Pode ser utilizado o pacote log do npm.
A principio os logs podem ser gerados apenas nos controladores, não é necessário gerar log nos componentes mais internos (uma vez que esses componentes devolvem os erros para o controlador).
A ferramenta de log deve ser incluida por uma middleware (assim como a engine e o adaptador)
A configuração da ferramenta de log deve ser feita pelo arquivo config.env através de variaveis de ambiente.
Também deve ser modificado o script de criação de um serviço do systemd para criar um arquivo /var/log/blendb.log
O valor padrão para criar o arquivo de log deve ser /var/log/blendb.log, seguido de ./logs/blendb.log por fim a saída de erro.Rafael DiasRafael Diashttps://gitlab.c3sl.ufpr.br/c3sl/blendb/-/issues/105Verificar mensagens de erro2019-08-09T12:25:57ZLucas Fernandes de OliveiraVerificar mensagens de erroMuitas das mensagens de erro não são significativas e existem alguns casos no qual existe erro mas não é informada a causa.
Um exemplo é a consulta:
http://simmcdev:3000/v1/data?metrics=met:min:cadunico:familia:renda:media&dimensions=d...Muitas das mensagens de erro não são significativas e existem alguns casos no qual existe erro mas não é informada a causa.
Um exemplo é a consulta:
http://simmcdev:3000/v1/data?metrics=met:min:cadunico:familia:renda:media&dimensions=dim:cadunico:familia:data:alteracao&filters=dim:cadunico:familia:data:alteracao==2011-06-03
Nesse caso a conversão do filtro falha, mas por alguma razão o erro não é notificadoRafael DiasRafael Diashttps://gitlab.c3sl.ufpr.br/c3sl/blendb/-/issues/103Adicionar ci a arquivos que não esta sendo coberto2019-02-08T12:49:06ZRafael DiasAdicionar ci a arquivos que não esta sendo cobertoComo as modificações da issue/92 teve impacto nos comandos schema e test-mode, além do docker compose. Avaliar a possibilidade de adicionar a cobertura nos comandos e de inserir o docker-compose no ci.Como as modificações da issue/92 teve impacto nos comandos schema e test-mode, além do docker compose. Avaliar a possibilidade de adicionar a cobertura nos comandos e de inserir o docker-compose no ci.https://gitlab.c3sl.ufpr.br/c3sl/blendb/-/issues/101Criar Classe para gerenciar mensagens de erro.2018-12-13T13:14:24ZLucas Fernandes de OliveiraCriar Classe para gerenciar mensagens de erro.Criar uma classe que gera as mensagens de erro.
Essa classe poderia ser chamada de ErrorHandler ou ErrorMsgHandler cujo objetivo é criar as mensagens de erro. Para cada mensagem de erro a classe deve ter um método para gerar uma mensage...Criar uma classe que gera as mensagens de erro.
Essa classe poderia ser chamada de ErrorHandler ou ErrorMsgHandler cujo objetivo é criar as mensagens de erro. Para cada mensagem de erro a classe deve ter um método para gerar uma mensagem específica. Caso a mensagem tenham parametros ela deve receber como argumento de função. A ideia da classe é padronizar as mensagens de erro e reduzir a quantidade de código repleta de strings gigantes.
Uma vez que a classe foi criada substituir as mensagens de erros por chamadas de funções dessa classe.https://gitlab.c3sl.ufpr.br/c3sl/blendb/-/issues/93Habilitar uso nome de tabelas ao invés de hash2019-01-10T11:07:07ZLucas Fernandes de OliveiraHabilitar uso nome de tabelas ao invés de hashO "nome" de uma visão no Blendb é determinado por suas métricas, dimensões e filtros aplicados. Com essas informações uma função de hash é aplicada gerando um nome.
Criar uma opção, para cada view, que permite utilizar o **alias**, ou u...O "nome" de uma visão no Blendb é determinado por suas métricas, dimensões e filtros aplicados. Com essas informações uma função de hash é aplicada gerando um nome.
Criar uma opção, para cada view, que permite utilizar o **alias**, ou um outro atributo a ser definido, como nome ao invés do hash gerado. Dessa forma para que o blendb seja compátivel com os outros bancos, não é necessário a criação de uma visão com o nome de uma hash, basta utilizar o próprio nome.1.0Rafael DiasRafael Diashttps://gitlab.c3sl.ufpr.br/c3sl/blendb/-/issues/92Revisar tests2019-01-11T10:35:34ZLucas Fernandes de OliveiraRevisar testsFazer uma analise mais precisa dos testes automáticos. Após a *issue*#88 ter sido aceita, deve averiguar o que não está coverto e se é factivel cobrir esses casos.Fazer uma analise mais precisa dos testes automáticos. Após a *issue*#88 ter sido aceita, deve averiguar o que não está coverto e se é factivel cobrir esses casos.1.0Rafael DiasRafael Diashttps://gitlab.c3sl.ufpr.br/c3sl/blendb/-/issues/85Conexão em múltiplos bancos de dados simultâneamente2018-10-03T14:53:04ZLucas Fernandes de OliveiraConexão em múltiplos bancos de dados simultâneamente# Problema
Foi detectado que para a realização da tarefa #58, é necessário se conectar em diversos bancos de dados simultâneamente. Foi detectada que essa não seria uma atualização trivial de ser realizada e terá grandes impactos em dive...# Problema
Foi detectado que para a realização da tarefa #58, é necessário se conectar em diversos bancos de dados simultâneamente. Foi detectada que essa não seria uma atualização trivial de ser realizada e terá grandes impactos em diversas partes do código, por essa razão uma tarefa separada foi criada.
Por enquanto o objetivo da tarefa é permitir a conexão a vários bancos que **compartilham o mesmo esquema**. No futuro pretende-se utilizar esquemas diferentes para cada um dos bancos, entretanto essa alteração seria muito grande e será delegada a uma outra tarefa futura.
Atualmente, conectar-se em múltiplos bancos de dados possui dois benefícios imediatos.
* Realização de testes simultâneos em SGBDs diferentes (garantindo corretude em todos os SGBD's)
* Distribuição de carga entre bases de dados (Que podem ser de SGBD's diferentes)
Além disso a inserção pode ser disparada para todos os adaptadores, mantendo a consistência da base. Ainda não é necessário decidir para qual base uma determinada inserção é enviada.
# Alterações necessárias
* [x] Modificar as variáveis de ambiente para conexão com o banco.
* Uma nova variável deve ser criada: **BLENDB_N_DATABASES** que indica o número de bancos de dados simultâneos sendo utilizados. Ela deve ter como valor *default* 1
* As variáveis **BLENDB_DB_*** devem ser modificadas para **BLENDB_DBN_** onde **DBN** será substituido por **DB0** para o primeiro banco, **DB1** para o segundo e assim sucessivamente
* A variável **BLENDB_ADAPTER** deve ser trocada para **BLENDB_DBN_ADAPTER**, já que cada banco pode ter o seu próprio adaptador
* Uma nova váriavel deve ser criada **BLENDB_SCHEMA** que contém o caminho para o esquema do banco de dados (relativo a raiz do projeto ou absoluto)
* [x] Alterações na leitura da configuração
* No **ConfigParser** trocar a criação da conexão de um objeto **Connection** para uma lista de conexões, uma para cada base.
* Realizar a leitura do arquivo de esquema a partir da váriavel de ambiente **BLENDB_SCHEMA**
* [x] Alterações na inicialização (**main.ts**)
* Remover a leitura *hardcoded* do arquivo de definição de esquema (Atualmente config.yaml ou test.yaml).
* Modificação da *middleware* de adapatdores para receber uma lista e não apenas uma conexão.
* [x] Modificação das *midlewares* de adaptador
* Unificar as *middlewares* de cada adaptador em uma única middleware que devolve uma lista de adaptadores e atribui a uma váriavel req.adapters
* [ ] Alterações nos controladores da API de leitura/escrita
* Criação de uma politica de leitura, sugestão: **round robin**, ou seja, cada nova requisição é enviada para o banco que foi o último a atender uma requisição
* Criação de uma politica de escrita, realizar a escrita em todos os bancos
* Caso 2 bancos na realidade forem o mesmo banco, a inserção será duplicada (inserções com data devem resolver)Revisionhttps://gitlab.c3sl.ufpr.br/c3sl/blendb/-/issues/80Centralizar parsers para enums2018-07-31T14:27:01ZLucas Fernandes de OliveiraCentralizar parsers para enumsAtulamente as funções que traduzem strings para Enums e vice-versa espalhadas em diversas classes, as que tem maior necessidade de utilizar essas funções, porém isso se torna incoveniente se mais de uma classe precisa do parser.
Criar u...Atulamente as funções que traduzem strings para Enums e vice-versa espalhadas em diversas classes, as que tem maior necessidade de utilizar essas funções, porém isso se torna incoveniente se mais de uma classe precisa do parser.
Criar um arquivo no diretório **utils** chamado **enumHandler** que deve contém métodos estáticos para manipulação dos enums1.0Rafael DiasRafael Dias