Issue #6: Create selector of optimal View and sql query generator for Postgres adpter
Acho que não precisa definir tipos nessas variáveis, porque o tipo é inferido a partir da definição. Ou seja, como
lessIdent
é uma string,lessIdent + "(\n)"
também é uma string e o typescript automaticamente infere que a variavelsql
tem que ser do tipo string. Ver Type Inference.Sem essas definições de tipos em variáveis locais triviais, acho que o código fica mais limpo. A definição de tipos faz mais sentido e é mais importante em variáveis que não são locais (parâmetros de funções, atributos de classes, etc.)
Essa parte aqui ficou meio difícil de entender.
Primeiramente, cada view tem um id único que é uma string hexadecimal, tipo
c2beff2aff88
. Então acho que não precisa do alias. Podemos só utilizar o próprio nome da view direto, sacou?"Segundamente", o degree também acho que não precisa. Claro que fica legal pra ver a query num console.log, mas acho que isso pode ser feito depois (um identador de SQL). A saída desse método tem que ser a query sem quebra de linhas, sem identação, sem nada. Depois pode usar uma coisa tipo essa pra visualizar a sua query melhor.
Tudo isso para eliminar os parâmetros alias e degree, e dá pra colocar a chamada nessa queryfyView pra dentro do outro loop ali em baixo, não?
Bom, vou tentar entender melhor o código aqui, depois agente pensa numa solução junto.
Para desacoplar melhor as coisas, acho que poderia ser assim:
aggrType = child.view.getAggregationType(metric); this.getAggregateFunction(aggrType);
E no
enum AggregationType
, adicionar o tipoNONE
(pra que o métodogetAggregationType
retorne quando não estiver definido nenhuma agregação para a métrica).
O nome desse arquivo pode ser só
postgres.ts
, porque ele já se encontra dentro do diretórioadapter
.