From 08bf6dc7efb5b2ff057141d0eb0ba126ed857951 Mon Sep 17 00:00:00 2001 From: Daniel Sumardi Date: Thu, 13 Jun 2019 14:20:38 +0700 Subject: [PATCH 1/4] [ENHANCEMENT] Update to support SQL Server database --- index.js | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/index.js b/index.js index 7bb4db6..89e768d 100644 --- a/index.js +++ b/index.js @@ -1,5 +1,7 @@ class QueryBuilder { - constructor() { + constructor(config) { + let { datastore } = config; + this.selectField = []; this.fromField = []; this.whereField = []; @@ -7,6 +9,7 @@ class QueryBuilder { this.firstTable = ''; this.limit = null; this.offset = null; + this.datastore = datastore; } addSelect(value) { @@ -140,8 +143,14 @@ class QueryBuilder { } if (this.limit && this.offset) { - queryString += `LIMIT ${this.limit} `; - if (this.offset) queryString += `OFFSET ${this.offset} `; + if (this.datastore === 'postgresql' || !this.datastore) { + queryString += `LIMIT ${this.limit} `; + queryString += `OFFSET ${this.offset} `; + } + else if (this.datastore === 'sqlserver') { + queryString += `OFFSET ${this.offset} ROWS `; + queryString += `FETCH NEXT ${this.limit} ROWS ONLY `; + } } queryString = queryString.trim(); From 48d70aa295d6924884d7c4d4981c53012a03ca10 Mon Sep 17 00:00:00 2001 From: Daniel Sumardi Date: Fri, 14 Jun 2019 11:19:00 +0700 Subject: [PATCH 2/4] [CLEANUP] Update readme --- README.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 9a834d8..22bf42c 100644 --- a/README.md +++ b/README.md @@ -18,7 +18,11 @@ Yarn: ```javascript const QueryBuilder = require('fish-query'); -const queryClass = new QueryBuilder(); +const config = { + datastore: 'postgresql' //Currently support 'postgresql' and 'sqlserver'. Default to 'postgresql' when not specified. +}; + +const queryClass = new QueryBuilder(config); let queryString = queryClass .addSelect('firstName') From 878f35dd729271cfce99ec608bc4a416d7121061 Mon Sep 17 00:00:00 2001 From: Daniel Sumardi Date: Fri, 6 Sep 2019 16:35:03 +0700 Subject: [PATCH 3/4] [BUGFIX] Add double quotes in ALIAS to prevent error when column name uses camel case --- index.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/index.js b/index.js index 89e768d..5b54a3d 100644 --- a/index.js +++ b/index.js @@ -71,7 +71,7 @@ class QueryBuilder { } else if (typeof select === 'object') { selectString = `${select.tableName}."${select.columnName}"`; - if (select.columnAlias) selectString += ` AS ${select.columnAlias}`; + if (select.columnAlias) selectString += ` AS "${select.columnAlias}"`; } if (index === this.selectField.length - 1) { @@ -163,4 +163,4 @@ class QueryBuilder { } } -module.exports = QueryBuilder; \ No newline at end of file +module.exports = QueryBuilder; From 56e21ac4a550c159aa1f2bb4677fb1b8a974af2c Mon Sep 17 00:00:00 2001 From: Daniel Sumardi Date: Fri, 6 Sep 2019 17:00:48 +0700 Subject: [PATCH 4/4] [BUGFIX][CLEANUP] Set default datastore config on constructor --- index.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/index.js b/index.js index 5b54a3d..e86ca4f 100644 --- a/index.js +++ b/index.js @@ -1,6 +1,6 @@ class QueryBuilder { constructor(config) { - let { datastore } = config; + let { datastore } = config ? config : { datastore: 'postgresql' } ; this.selectField = []; this.fromField = []; @@ -143,7 +143,7 @@ class QueryBuilder { } if (this.limit && this.offset) { - if (this.datastore === 'postgresql' || !this.datastore) { + if (this.datastore === 'postgresql') { queryString += `LIMIT ${this.limit} `; queryString += `OFFSET ${this.offset} `; }