|
1 | 1 | 'use strict';
|
2 | 2 |
|
| 3 | +/* eslint-disable no-use-before-define */ |
| 4 | +/* eslint-disable import/no-unresolved */ |
| 5 | +const { createQuery } = require('mysql'); |
| 6 | + |
3 | 7 | const identifierRegexp = /^[0-9,a-z,A-Z_.]*$/;
|
4 | 8 |
|
5 | 9 | const escapeIdentifier = (str, quote) => {
|
@@ -51,20 +55,24 @@ const upgrade = connection => {
|
51 | 55 | values,
|
52 | 56 | callback
|
53 | 57 | ) {
|
| 58 | + const queryOptions = createQuery(sql, values, callback); |
| 59 | + const userCallback = queryOptions._callback; |
| 60 | + |
54 | 61 | const startTime = new Date().getTime();
|
55 |
| - if (typeof values === 'function') { |
56 |
| - callback = values; |
57 |
| - values = []; |
58 |
| - } |
59 |
| - const query = this.inherited(sql, values, (err, res, fields) => { |
| 62 | + |
| 63 | + const callbackWrapper = (err, res, fields) => { |
60 | 64 | const endTime = new Date().getTime();
|
61 | 65 | const executionTime = endTime - startTime;
|
62 | 66 | connection.emit('query', err, res, fields, query);
|
63 | 67 | if (connection.slowTime && executionTime >= connection.slowTime) {
|
64 | 68 | connection.emit('slow', err, res, fields, query, executionTime);
|
65 | 69 | }
|
66 |
| - if (callback) callback(err, res, fields); |
67 |
| - }); |
| 70 | + if (userCallback) userCallback(err, res, fields); |
| 71 | + }; |
| 72 | + |
| 73 | + queryOptions._callback = callbackWrapper; |
| 74 | + |
| 75 | + const query = this.inherited(queryOptions); |
68 | 76 | return query;
|
69 | 77 | });
|
70 | 78 |
|
@@ -120,90 +128,105 @@ const upgrade = connection => {
|
120 | 128 | // Returns single row as associative array of fields
|
121 | 129 | //
|
122 | 130 | connection.queryRow = function (sql, values, callback) {
|
123 |
| - if (typeof values === 'function') { |
124 |
| - callback = values; |
125 |
| - values = []; |
126 |
| - } |
127 |
| - return this.query(sql, values, (err, res, fields) => { |
128 |
| - if (err) return callback(err); |
| 131 | + const queryOptions = createQuery(sql, values, callback); |
| 132 | + const userCallback = queryOptions._callback; |
| 133 | + |
| 134 | + const callbackWrapper = (err, res, fields) => { |
| 135 | + if (err) return userCallback(err); |
129 | 136 | res = res[0] ? res[0] : false;
|
130 |
| - callback(err, res, fields); |
131 |
| - }); |
| 137 | + userCallback(err, res, fields); |
| 138 | + }; |
| 139 | + |
| 140 | + queryOptions._callback = callbackWrapper; |
| 141 | + |
| 142 | + return this.query(queryOptions); |
132 | 143 | };
|
133 | 144 |
|
134 | 145 | // Returns single value (scalar)
|
135 | 146 | //
|
136 | 147 | connection.queryValue = function (sql, values, callback) {
|
137 |
| - if (typeof values === 'function') { |
138 |
| - callback = values; |
139 |
| - values = []; |
140 |
| - } |
141 |
| - return this.queryRow(sql, values, (err, res, fields) => { |
142 |
| - if (err) return callback(err); |
| 148 | + const queryOptions = createQuery(sql, values, callback); |
| 149 | + const userCallback = queryOptions._callback; |
| 150 | + |
| 151 | + const callbackWrapper = (err, res, fields) => { |
| 152 | + if (err) return userCallback(err); |
143 | 153 | const value = res[Object.keys(res)[0]];
|
144 |
| - callback(err, value, fields); |
145 |
| - }); |
| 154 | + userCallback(err, value, fields); |
| 155 | + }; |
| 156 | + |
| 157 | + queryOptions._callback = callbackWrapper; |
| 158 | + |
| 159 | + return this.queryRow(queryOptions); |
146 | 160 | };
|
147 | 161 |
|
148 | 162 | // Query returning array of column field values
|
149 | 163 | //
|
150 | 164 | connection.queryCol = function (sql, values, callback) {
|
151 |
| - if (typeof values === 'function') { |
152 |
| - callback = values; |
153 |
| - values = []; |
154 |
| - } |
155 |
| - return this.query(sql, values, (err, res, fields) => { |
156 |
| - if (err) return callback(err); |
| 165 | + const queryOptions = createQuery(sql, values, callback); |
| 166 | + const userCallback = queryOptions._callback; |
| 167 | + |
| 168 | + const callbackWrapper = (err, res, fields) => { |
| 169 | + if (err) return userCallback(err); |
157 | 170 | const result = [];
|
158 | 171 | let i, row, keys;
|
159 | 172 | for (i in res) {
|
160 | 173 | row = res[i];
|
161 | 174 | keys = Object.keys(row);
|
162 | 175 | result.push(row[keys[0]]);
|
163 | 176 | }
|
164 |
| - callback(err, result, fields); |
165 |
| - }); |
| 177 | + userCallback(err, result, fields); |
| 178 | + }; |
| 179 | + |
| 180 | + queryOptions._callback = callbackWrapper; |
| 181 | + |
| 182 | + return this.query(queryOptions); |
166 | 183 | };
|
167 | 184 |
|
168 | 185 | // Query returning hash (associative array), first field will be array key
|
169 | 186 | //
|
170 | 187 | connection.queryHash = function (sql, values, callback) {
|
171 |
| - if (typeof values === 'function') { |
172 |
| - callback = values; |
173 |
| - values = []; |
174 |
| - } |
175 |
| - return this.query(sql, values, (err, res, fields) => { |
176 |
| - if (err) return callback(err); |
| 188 | + const queryOptions = createQuery(sql, values, callback); |
| 189 | + const userCallback = queryOptions._callback; |
| 190 | + |
| 191 | + const callbackWrapper = (err, res, fields) => { |
| 192 | + if (err) return userCallback(err); |
177 | 193 | const result = {};
|
178 | 194 | let i, row, keys;
|
179 | 195 | for (i in res) {
|
180 | 196 | row = res[i];
|
181 | 197 | keys = Object.keys(row);
|
182 | 198 | result[row[keys[0]]] = row;
|
183 | 199 | }
|
184 |
| - callback(err, result, fields); |
185 |
| - }); |
| 200 | + userCallback(err, result, fields); |
| 201 | + }; |
| 202 | + |
| 203 | + queryOptions._callback = callbackWrapper; |
| 204 | + |
| 205 | + return this.query(queryOptions); |
186 | 206 | };
|
187 | 207 |
|
188 | 208 | // Query returning key-value array,
|
189 | 209 | // first field of query will be key and second will be value
|
190 | 210 | //
|
191 | 211 | connection.queryKeyValue = function (sql, values, callback) {
|
192 |
| - if (typeof values === 'function') { |
193 |
| - callback = values; |
194 |
| - values = []; |
195 |
| - } |
196 |
| - return this.query(sql, values, (err, res, fields) => { |
197 |
| - if (err) return callback(err); |
| 212 | + const queryOptions = createQuery(sql, values, callback); |
| 213 | + const userCallback = queryOptions._callback; |
| 214 | + |
| 215 | + const callbackWrapper = (err, res, fields) => { |
| 216 | + if (err) return userCallback(err); |
198 | 217 | const result = {};
|
199 | 218 | let i, row, keys;
|
200 | 219 | for (i in res) {
|
201 | 220 | row = res[i];
|
202 | 221 | keys = Object.keys(row);
|
203 | 222 | result[row[keys[0]]] = row[keys[1]];
|
204 | 223 | }
|
205 |
| - callback(err, result, fields); |
206 |
| - }); |
| 224 | + userCallback(err, result, fields); |
| 225 | + }; |
| 226 | + |
| 227 | + queryOptions._callback = callbackWrapper; |
| 228 | + |
| 229 | + return this.query(queryOptions); |
207 | 230 | };
|
208 | 231 |
|
209 | 232 | // SELECT SQL statement generator
|
|
0 commit comments