Sfoglia il codice sorgente

Refactor value column SQL generation

Sven Klemm 7 anni fa
parent
commit
2784a2df6b

+ 19 - 17
public/app/plugins/datasource/postgres/postgres_query.ts

@@ -86,8 +86,8 @@ export default class PostgresQuery {
   }
 
   addGroupBy(partType, value) {
-    var partModel = sqlPart.create({ type: partType, params: [value] });
-    var partCount = this.target.groupBy.length;
+    let partModel = sqlPart.create({ type: partType, params: [value] });
+    let partCount = this.target.groupBy.length;
 
     if (partCount === 0) {
       this.target.groupBy.push(partModel.part);
@@ -137,11 +137,11 @@ export default class PostgresQuery {
     // if we remove the field remove the whole statement
     if (part.def.type === 'column') {
       if (this.selectModels.length > 1) {
-        var modelsIndex = _.indexOf(this.selectModels, selectParts);
+        let modelsIndex = _.indexOf(this.selectModels, selectParts);
         this.selectModels.splice(modelsIndex, 1);
       }
     } else {
-      var partIndex = _.indexOf(selectParts, part);
+      let partIndex = _.indexOf(selectParts, part);
       selectParts.splice(partIndex, 1);
     }
 
@@ -149,7 +149,7 @@ export default class PostgresQuery {
   }
 
   addSelectPart(selectParts, type) {
-    var partModel = sqlPart.create({ type: type });
+    let partModel = sqlPart.create({ type: type });
     partModel.def.addStrategy(selectParts, partModel, this);
     this.updatePersistedParts();
   }
@@ -164,7 +164,7 @@ export default class PostgresQuery {
       return this.quoteLiteral(value);
     }
 
-    var escapedValues = _.map(value, this.quoteLiteral);
+    let escapedValues = _.map(value, this.quoteLiteral);
     return '(' + escapedValues.join(',') + ')';
   }
 
@@ -193,7 +193,7 @@ export default class PostgresQuery {
     let query;
 
     if (timeGroup) {
-      var args;
+      let args;
       if (timeGroup.params.length > 1 && timeGroup.params[1] !== 'none') {
         args = timeGroup.params.join(',');
       } else {
@@ -220,22 +220,24 @@ export default class PostgresQuery {
   buildValueColumns(target) {
     let query = '';
     for (let i = 0; i < this.selectModels.length; i++) {
-      let parts = this.selectModels[i];
-      var selectText = '';
-      for (let y = 0; y < parts.length; y++) {
-        let part = parts[y];
-        selectText = part.render(selectText);
-      }
-
-      query += ', ' + selectText;
+      query += ', ' + this.buildValueColumn(target, this.selectModels[i]);
     }
 
     return query;
   }
 
+  buildValueColumn(target, column) {
+    let selectText = '';
+    for (let i = 0; i < column.length; i++) {
+      let part = column[i];
+      selectText = part.render(selectText);
+    }
+    return selectText;
+  }
+
   buildWhereClause(target) {
     let query = '';
-    var conditions = _.map(target.where, (tag, index) => {
+    let conditions = _.map(target.where, (tag, index) => {
       switch (tag.type) {
         case 'macro':
           return tag.name + '(' + target.timeColumn + ')';
@@ -258,7 +260,7 @@ export default class PostgresQuery {
     let groupBySection = '';
 
     for (let i = 0; i < this.groupByParts.length; i++) {
-      var part = this.groupByParts[i];
+      let part = this.groupByParts[i];
       if (i > 0) {
         groupBySection += ', ';
       }

+ 1 - 1
public/app/plugins/datasource/postgres/query_ctrl.ts

@@ -78,7 +78,7 @@ export class PostgresQueryCtrl extends QueryCtrl {
     this.selectMenu = [
       { text: 'Aggregate', value: 'aggregate' },
       { text: 'Math', value: 'math' },
-      //  { text: 'Special', value: 'special' },
+      { text: 'Special', value: 'special' },
       { text: 'Alias', value: 'alias' },
       { text: 'Column', value: 'column' },
     ];