murmuration 1.1.3 → 1.1.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/statement.js +58 -17
- package/package.json +1 -1
package/bin/statement.js
CHANGED
|
@@ -147,26 +147,22 @@ class Statement {
|
|
|
147
147
|
return this;
|
|
148
148
|
}
|
|
149
149
|
|
|
150
|
-
values(
|
|
151
|
-
const
|
|
152
|
-
parameters = Object.values(object),
|
|
153
|
-
firstIndex = 0,
|
|
154
|
-
placeholders = columns.reduce((placeholders, column, index) => {
|
|
155
|
-
const placeholder = this.placeholder();
|
|
156
|
-
|
|
157
|
-
placeholders = (index === firstIndex) ?
|
|
158
|
-
`${placeholder}` :
|
|
159
|
-
`${placeholders}, ${placeholder}`;
|
|
150
|
+
values(objectOrArray, ...parameters) {
|
|
151
|
+
const objectOrArrayIsArray = Array.isArray(objectOrArray);
|
|
160
152
|
|
|
161
|
-
|
|
162
|
-
|
|
153
|
+
if (objectOrArrayIsArray) {
|
|
154
|
+
const array = objectOrArray,
|
|
155
|
+
strings = array, ///
|
|
156
|
+
columnsAndValues = this.columnsAndValuesFromStringsAndParameters(strings, parameters);
|
|
163
157
|
|
|
164
|
-
|
|
158
|
+
this.sql = `${this.sql} ${columnsAndValues}`;
|
|
159
|
+
} else {
|
|
160
|
+
const object = objectOrArray, ///
|
|
161
|
+
values = this.valuesFromObject(object),
|
|
162
|
+
columns = this.columnsFromObject(object)
|
|
165
163
|
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
...parameters
|
|
169
|
-
];
|
|
164
|
+
this.sql = `${this.sql} (${columns}) VALUES (${values})`;
|
|
165
|
+
}
|
|
170
166
|
|
|
171
167
|
return this;
|
|
172
168
|
}
|
|
@@ -186,6 +182,28 @@ class Statement {
|
|
|
186
182
|
return object;
|
|
187
183
|
}
|
|
188
184
|
|
|
185
|
+
valuesFromObject(object) {
|
|
186
|
+
const columns = this.columnsFromObject(object),
|
|
187
|
+
parameters = Object.values(object), ///
|
|
188
|
+
firstIndex = 0,
|
|
189
|
+
values = columns.reduce((values, column, index) => {
|
|
190
|
+
const placeholder = this.placeholder();
|
|
191
|
+
|
|
192
|
+
values = (index === firstIndex) ?
|
|
193
|
+
`${placeholder}` :
|
|
194
|
+
` ${values}, ${placeholder}`;
|
|
195
|
+
|
|
196
|
+
return values;
|
|
197
|
+
}, EMPTY_STRING);
|
|
198
|
+
|
|
199
|
+
this.parameters = [
|
|
200
|
+
...this.parameters,
|
|
201
|
+
...parameters
|
|
202
|
+
];
|
|
203
|
+
|
|
204
|
+
return values;
|
|
205
|
+
}
|
|
206
|
+
|
|
189
207
|
clauseFromObject(object) {
|
|
190
208
|
const columns = this.columnsFromObject(object),
|
|
191
209
|
parameters = Object.values(object), ///
|
|
@@ -260,6 +278,29 @@ class Statement {
|
|
|
260
278
|
return clause;
|
|
261
279
|
}
|
|
262
280
|
|
|
281
|
+
columnsAndValuesFromStringsAndParameters(strings, parameters) {
|
|
282
|
+
const stringsLength = strings.length,
|
|
283
|
+
lastIndex = stringsLength - 1,
|
|
284
|
+
columnsAndValues = strings.reduce((columnsAndValues, string, index) => {
|
|
285
|
+
if (index < lastIndex) {
|
|
286
|
+
const placeholder = this.placeholder();
|
|
287
|
+
|
|
288
|
+
columnsAndValues = `${columnsAndValues}${string}${placeholder}`
|
|
289
|
+
} else {
|
|
290
|
+
columnsAndValues = `${columnsAndValues}${string}`;
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
return columnsAndValues;
|
|
294
|
+
}, EMPTY_STRING);
|
|
295
|
+
|
|
296
|
+
this.parameters = [
|
|
297
|
+
...this.parameters,
|
|
298
|
+
...parameters
|
|
299
|
+
];
|
|
300
|
+
|
|
301
|
+
return columnsAndValues;
|
|
302
|
+
}
|
|
303
|
+
|
|
263
304
|
execute() {
|
|
264
305
|
this.query ?
|
|
265
306
|
query(this.connection, this.sql, ...this.parameters, this.queryHandler) :
|
package/package.json
CHANGED