From 9a4794ee10f6aeef8782c837aa0bccd649f158fe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Garc=C3=ADa=20Aubert?= Date: Thu, 14 Sep 2017 17:09:55 +0200 Subject: [PATCH 1/8] Remove dot requirement and use template strings to build list aggregation query --- lib/cartodb/models/dataview/list.js | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/lib/cartodb/models/dataview/list.js b/lib/cartodb/models/dataview/list.js index 33993777..b241819e 100644 --- a/lib/cartodb/models/dataview/list.js +++ b/lib/cartodb/models/dataview/list.js @@ -1,11 +1,8 @@ -var dot = require('dot'); -dot.templateSettings.strip = false; - var BaseWidget = require('./base'); var TYPE = 'list'; -var listSqlTpl = dot.template('select {{=it._columns}} from ({{=it._query}}) as _cdb_list'); +var listSqlTpl = ctx => `select ${ctx._columns} from (${ctx._query}) as _cdb_list`; /** { From cdc56e703c11f01ed074e814be446e49684b6112 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Garc=C3=ADa=20Aubert?= Date: Thu, 14 Sep 2017 17:10:51 +0200 Subject: [PATCH 2/8] Rename BaseWidget by BaseDataview --- lib/cartodb/models/dataview/list.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/cartodb/models/dataview/list.js b/lib/cartodb/models/dataview/list.js index b241819e..064a4cdc 100644 --- a/lib/cartodb/models/dataview/list.js +++ b/lib/cartodb/models/dataview/list.js @@ -1,4 +1,4 @@ -var BaseWidget = require('./base'); +var BaseDataview = require('./base'); var TYPE = 'list'; @@ -20,13 +20,13 @@ function List(query, options) { throw new Error('List expects `columns` array in widget options'); } - BaseWidget.apply(this); + BaseDataview.apply(this); this.query = query; this.columns = options.columns; } -List.prototype = new BaseWidget(); +List.prototype = new BaseDataview(); List.prototype.constructor = List; module.exports = List; From c8ff61c531d02717b5a159d1cb87b58c2cb368e0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Garc=C3=ADa=20Aubert?= Date: Thu, 14 Sep 2017 17:15:43 +0200 Subject: [PATCH 3/8] Use ES6 class syntax --- lib/cartodb/models/dataview/list.js | 78 ++++++++++++++--------------- 1 file changed, 38 insertions(+), 40 deletions(-) diff --git a/lib/cartodb/models/dataview/list.js b/lib/cartodb/models/dataview/list.js index 064a4cdc..cb895429 100644 --- a/lib/cartodb/models/dataview/list.js +++ b/lib/cartodb/models/dataview/list.js @@ -12,52 +12,50 @@ var listSqlTpl = ctx => `select ${ctx._columns} from (${ctx._query}) as _cdb_lis } } */ +module.exports = class List extends BaseDataview{ + constructor (query, options = {}) { + super(); -function List(query, options) { - options = options || {}; + this._checkOptions(options); - if (!Array.isArray(options.columns)) { - throw new Error('List expects `columns` array in widget options'); + this.query = query; + this.columns = options.columns; } - BaseDataview.apply(this); - - this.query = query; - this.columns = options.columns; -} - -List.prototype = new BaseDataview(); -List.prototype.constructor = List; - -module.exports = List; - -List.prototype.sql = function(psql, override, callback) { - if (!callback) { - callback = override; + _checkOptions (options) { + if (!Array.isArray(options.columns)) { + throw new Error('List expects `columns` array in widget options'); + } } - var listSql = listSqlTpl({ - _query: this.query, - _columns: this.columns.join(', ') - }); + sql (psql, override, callback) { + if (!callback) { + callback = override; + } - return callback(null, listSql); -}; + var listSql = listSqlTpl({ + _query: this.query, + _columns: this.columns.join(', ') + }); -List.prototype.format = function(result) { - return { - rows: result.rows + return callback(null, listSql); + } + + format (result) { + return { + rows: result.rows + }; + } + + getType () { + return TYPE; + } + + toString () { + return JSON.stringify({ + _type: TYPE, + _query: this.query, + _columns: this.columns.join(', ') + }); }; -}; - -List.prototype.getType = function() { - return TYPE; -}; - -List.prototype.toString = function() { - return JSON.stringify({ - _type: TYPE, - _query: this.query, - _columns: this.columns.join(', ') - }); -}; +} From 050e9776d1355e9c24fed37d71fe9ef32b583dc2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Garc=C3=ADa=20Aubert?= Date: Thu, 14 Sep 2017 17:18:20 +0200 Subject: [PATCH 4/8] Use const for requirements, constants and variables that are initialized once --- lib/cartodb/models/dataview/list.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/cartodb/models/dataview/list.js b/lib/cartodb/models/dataview/list.js index cb895429..d3b92e16 100644 --- a/lib/cartodb/models/dataview/list.js +++ b/lib/cartodb/models/dataview/list.js @@ -1,8 +1,8 @@ -var BaseDataview = require('./base'); +const BaseDataview = require('./base'); -var TYPE = 'list'; +const TYPE = 'list'; -var listSqlTpl = ctx => `select ${ctx._columns} from (${ctx._query}) as _cdb_list`; +const listSqlTpl = ctx => `select ${ctx._columns} from (${ctx._query}) as _cdb_list`; /** { @@ -33,7 +33,7 @@ module.exports = class List extends BaseDataview{ callback = override; } - var listSql = listSqlTpl({ + const listSql = listSqlTpl({ _query: this.query, _columns: this.columns.join(', ') }); From d328b534a5622f76489a12177565dd55f4fae0ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Garc=C3=ADa=20Aubert?= Date: Thu, 14 Sep 2017 17:19:16 +0200 Subject: [PATCH 5/8] Replace widget word by dataview --- lib/cartodb/models/dataview/list.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/cartodb/models/dataview/list.js b/lib/cartodb/models/dataview/list.js index d3b92e16..05cee5f7 100644 --- a/lib/cartodb/models/dataview/list.js +++ b/lib/cartodb/models/dataview/list.js @@ -24,7 +24,7 @@ module.exports = class List extends BaseDataview{ _checkOptions (options) { if (!Array.isArray(options.columns)) { - throw new Error('List expects `columns` array in widget options'); + throw new Error('List expects `columns` array in dataview options'); } } From d0e2c9f898e6dff28a1fc92f5d194e916f89d124 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Garc=C3=ADa=20Aubert?= Date: Thu, 14 Sep 2017 17:21:21 +0200 Subject: [PATCH 6/8] Use debug module to print sql for debugging purposes --- lib/cartodb/models/dataview/list.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lib/cartodb/models/dataview/list.js b/lib/cartodb/models/dataview/list.js index 05cee5f7..b8d90d1b 100644 --- a/lib/cartodb/models/dataview/list.js +++ b/lib/cartodb/models/dataview/list.js @@ -1,4 +1,5 @@ const BaseDataview = require('./base'); +const debug = require('debug')('windshaft:dataview:list'); const TYPE = 'list'; @@ -12,7 +13,7 @@ const listSqlTpl = ctx => `select ${ctx._columns} from (${ctx._query}) as _cdb_l } } */ -module.exports = class List extends BaseDataview{ +module.exports = class List extends BaseDataview { constructor (query, options = {}) { super(); @@ -38,6 +39,8 @@ module.exports = class List extends BaseDataview{ _columns: this.columns.join(', ') }); + debug(listSql); + return callback(null, listSql); } From 2a0b15f085d9c29a954544e15a2fb39dc580d35b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Garc=C3=ADa=20Aubert?= Date: Thu, 14 Sep 2017 17:22:34 +0200 Subject: [PATCH 7/8] Remove prefix '_' while passing context param to templates --- lib/cartodb/models/dataview/list.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/cartodb/models/dataview/list.js b/lib/cartodb/models/dataview/list.js index b8d90d1b..db90d706 100644 --- a/lib/cartodb/models/dataview/list.js +++ b/lib/cartodb/models/dataview/list.js @@ -3,7 +3,7 @@ const debug = require('debug')('windshaft:dataview:list'); const TYPE = 'list'; -const listSqlTpl = ctx => `select ${ctx._columns} from (${ctx._query}) as _cdb_list`; +const listSqlTpl = ctx => `select ${ctx.columns} from (${ctx.query}) as _cdb_list`; /** { @@ -35,8 +35,8 @@ module.exports = class List extends BaseDataview { } const listSql = listSqlTpl({ - _query: this.query, - _columns: this.columns.join(', ') + query: this.query, + columns: this.columns.join(', ') }); debug(listSql); From dbb23bf9f087147a923f3916d5bd5ecf5d5ba3e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Garc=C3=ADa=20Aubert?= Date: Thu, 14 Sep 2017 17:24:13 +0200 Subject: [PATCH 8/8] Remove jshint's complaints --- lib/cartodb/models/dataview/list.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/cartodb/models/dataview/list.js b/lib/cartodb/models/dataview/list.js index db90d706..a54c660f 100644 --- a/lib/cartodb/models/dataview/list.js +++ b/lib/cartodb/models/dataview/list.js @@ -60,5 +60,5 @@ module.exports = class List extends BaseDataview { _query: this.query, _columns: this.columns.join(', ') }); - }; -} + } +};