Skip to content

Commit 41d1d02

Browse files
committed
Update: code refactor
1 parent bd45596 commit 41d1d02

File tree

1 file changed

+36
-56
lines changed

1 file changed

+36
-56
lines changed

sequelizeQueryParser.js

Lines changed: 36 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ const Promise = require('bluebird');
1313
* @param {*} db
1414
* @returns object {parse}
1515
*/
16-
module.exports = function (db) {
16+
module.exports = (db) => {
1717
const Op = db.Sequelize.Op;
1818

1919
const operators = {
@@ -46,21 +46,20 @@ module.exports = function (db) {
4646
}
4747

4848
/**
49-
* Split '.' or ',' seperated strings to array
49+
* Split '.' or ',' separated strings to array
5050
* @param {JSON} obj
5151
* @param {array} array
5252
*/
5353
const splitStringAndBuildArray = (obj, array) => {
54-
let elements = obj.split(',');
54+
const elements = obj.split(',');
5555

56-
if (elements && elements.length > 0) {
57-
elements.forEach(element => {
58-
var fields = element.split('.');
59-
if (fields && fields.length > 0) {
60-
array.push(fields)
61-
}
62-
});
63-
}
56+
elements.forEach(element => {
57+
const fields = element.split('.');
58+
59+
if (fields?.length > 0) {
60+
array.push(fields)
61+
}
62+
});
6463
}
6564

6665
/**
@@ -78,8 +77,7 @@ module.exports = function (db) {
7877
query.forEach(obj => {
7978
splitStringAndBuildArray(obj, array);
8079
});
81-
}
82-
else {
80+
} else {
8381
splitStringAndBuildArray(query, array);
8482
}
8583
}
@@ -94,43 +92,33 @@ module.exports = function (db) {
9492
* @param {Sequelize.op} op
9593
*/
9694
const replaceKeyWithOperator = (json, key, op) => {
97-
let value = json[key];
95+
const value = json[key];
9896
delete json[key];
9997
json[op] = value;
10098
}
10199

102100
/**
103-
* Iteratively replace json keys with Sequelize formated query operators.
101+
* Iteratively replace json keys with Sequelize formatted query operators.
104102
* @param {JSON} json next json
105103
*/
106104
const iterativeReplace = (json) => {
107-
Object.keys(json).forEach(function (key) {
105+
Object.keys(json).forEach((key) => {
108106
if (json[key] !== null && typeof json[key] === 'object') {
109-
110-
// console.debug("key: ", key);
111-
let op = operators[key];
112-
// console.debug("operation: ", op);
107+
const op = operators[key];
113108

114109
if (op) {
115110
replaceKeyWithOperator(json, key, op);
116-
// console.debug("next: ", JSON.stringify(json[op], null, 4));
117111
iterativeReplace(json[op]);
118-
}
119-
else {
120-
// console.debug("next: ", JSON.stringify(json[key], null, 4));
112+
} else {
121113
iterativeReplace(json[key]);
122114
}
123115
}
124116
else if (key == 'model' && db[json[key]] != null) {
125-
// json['as'] = json[key].replace(/^./, char => char.toLowerCase());// /^\w/
126-
json['model'] = db[json[key]];
127-
}
128-
else {
129-
let op = operators[key];
117+
json.model = db[json[key]];
118+
} else {
119+
const op = operators[key];
130120
if (op) replaceKeyWithOperator(json, key, op);
131121
}
132-
133-
// console.debug("After Key:", key, " Query fields: ", JSON.stringify(json, null, 4))
134122
});
135123
}
136124

@@ -141,8 +129,7 @@ module.exports = function (db) {
141129
*/
142130
const unescapeEscapedQuery = (query) => {
143131
const queryString = query.toString();
144-
const queryStringUnescaped = unescape(queryString);
145-
return queryStringUnescaped;
132+
return unescape(queryString);
146133
}
147134

148135
/**
@@ -151,9 +138,8 @@ module.exports = function (db) {
151138
* @returns {JSON} sequelize formatted DB query params JSON
152139
*/
153140
const parseQueryFields = (query) => {
154-
let json = JSON.parse(unescapeEscapedQuery(query));
141+
const json = JSON.parse(unescapeEscapedQuery(query));
155142
iterativeReplace(json);
156-
// console.debug("Resultent query fields: ", json);
157143
return json;
158144
}
159145

@@ -163,9 +149,8 @@ module.exports = function (db) {
163149
* @returns {JSON} sequelize formatted DB include params JSON
164150
*/
165151
const parseIncludeFields = (query) => {
166-
let json = JSON.parse(unescapeEscapedQuery(query));
152+
const json = JSON.parse(unescapeEscapedQuery(query));
167153
iterativeReplace(json);
168-
// console.debug("Resultent include fields: ", json);
169154
return json;
170155
}
171156

@@ -175,23 +160,18 @@ module.exports = function (db) {
175160
* @returns {string|JSON} sequelize formatted DB query param
176161
*/
177162
const parseQueryParam = (query) => {
178-
let elements = query.split(/:(.+)/);
179-
// console.debug("Query param: ", JSON.stringify(elements, null, 4));
180-
if (elements && elements.length > 1) {
181-
var param = {};
182-
const elementsArray = elements[1].split(',')
183-
if (elementsArray){
184-
if (elementsArray.length > 1){
185-
param[operators[elements[0]]] = elementsArray
186-
}
187-
else {
188-
param[operators[elements[0]]] = elementsArray[0]
189-
}
190-
// console.debug("Query param: ", param);
163+
const elements = query.split(/:(.+)/);
164+
165+
if (elements.length > 1) {
166+
const param = {};
167+
const elementsArray = elements[1].split(',');
168+
169+
if (elementsArray) {
170+
param[operators[elements[0]]] = elementsArray.length > 1 ? elementsArray : elementsArray[0];
191171
return param;
192172
}
193173
}
194-
// console.debug("Query param: ", elements[0]);
174+
195175
return elements[0];
196176
}
197177

@@ -226,18 +206,18 @@ module.exports = function (db) {
226206

227207
return new Promise((resolve, reject) => {
228208
try {
229-
var offset = 0, limit = pageSizeLimit;
230-
var dbQuery = {
209+
let offset = 0;
210+
let limit = pageSizeLimit;
211+
const dbQuery = {
231212
where: {}
232213
};
233-
const Op = db.Sequelize.Op;
234214

235215
for (const key in req.query) {
236216
switch (key) {
237217
// Fields
238218
case 'fields':
239219
// split the field names (attributes) and assign to an array
240-
let fields = req.query.fields.split(",");
220+
const fields = req.query.fields.split(",");
241221
// assign fields array to .attributes
242222
if (fields && fields.length > 0) dbQuery.attributes = fields;
243223
break;
@@ -266,7 +246,7 @@ module.exports = function (db) {
266246

267247
// JSON (nested) query
268248
case 'query':
269-
let parsed = parseQueryFields(req.query.query);
249+
const parsed = parseQueryFields(req.query.query);
270250
dbQuery.where = { ...dbQuery.where, ...parsed };
271251
break;
272252

0 commit comments

Comments
 (0)