@bee.js/node 0.0.93 → 0.0.94
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/beehive.js +23 -26
- package/lib/ORM/beeORM.js +36 -42
- package/package.json +2 -2
package/beehive.js
CHANGED
|
@@ -40,12 +40,13 @@ module.exports = function hive(req = {}, res = {}, model = null) {
|
|
|
40
40
|
if (global.configs.debug)
|
|
41
41
|
console.log(
|
|
42
42
|
SQL.replace(
|
|
43
|
-
/\b(SELECT|FROM|WHERE|INNER
|
|
43
|
+
/\b(SELECT|DELETE|UPDATE|FROM|WHERE|INNER|JOIN|LEFT|RIGHT|GROUP BY|ORDER BY|LIMIT)\b/gi,
|
|
44
44
|
(match) => `\n${match.toUpperCase()}`
|
|
45
45
|
).replace(
|
|
46
|
-
/\b(SELECT|FROM|WHERE|INNER|JOIN|LEFT|RIGHT|ON|GROUP BY|ORDER BY|LIMIT|AND|OR|AS|IN|NOT|NULL|IS|DISTINCT|HAVING|UNION|ALL)\b/gi,
|
|
46
|
+
/\b(SELECT|DELETE|UPDATE|FROM|WHERE|INNER|JOIN|LEFT|RIGHT|ON|GROUP BY|ORDER BY|LIMIT|AND|OR|AS|IN|NOT|NULL|IS|DISTINCT|HAVING|UNION|ALL)\b/gi,
|
|
47
47
|
(match) => `\x1b[1;36m${match.toUpperCase()}\x1b[0m`
|
|
48
|
-
)
|
|
48
|
+
),
|
|
49
|
+
{ binds }
|
|
49
50
|
);
|
|
50
51
|
|
|
51
52
|
global.beeDBPool = global.beeDBPool || beeORM.createPool(global.configs);
|
|
@@ -139,12 +140,11 @@ module.exports = function hive(req = {}, res = {}, model = null) {
|
|
|
139
140
|
|
|
140
141
|
relJoin[_parentTable] = !relJoin[_parentTable]
|
|
141
142
|
? `INNER JOIN ${q(_parentTable)} ON ${q(
|
|
142
|
-
|
|
143
|
-
|
|
143
|
+
_parentTable
|
|
144
|
+
)}.${_parentField} = ${models[modelName].table}.${_relField} `
|
|
144
145
|
: relJoin[_parentTable] +
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
}.${_relField} `;
|
|
146
|
+
`AND ${q(_parentTable)}.${_parentField} = ${models[modelName].table
|
|
147
|
+
}.${_relField} `;
|
|
148
148
|
}
|
|
149
149
|
}
|
|
150
150
|
|
|
@@ -339,14 +339,10 @@ module.exports = function hive(req = {}, res = {}, model = null) {
|
|
|
339
339
|
|
|
340
340
|
fields.map((field) => {
|
|
341
341
|
orderBy.push(
|
|
342
|
-
`WHEN ${field} = '${string}' THEN ${
|
|
343
|
-
|
|
344
|
-
} WHEN ${field} LIKE '
|
|
345
|
-
|
|
346
|
-
} WHEN ${field} LIKE '%${string}%' THEN ${
|
|
347
|
-
relevance[2]
|
|
348
|
-
} WHEN ${field} LIKE '%${string.replace(/ /g, "%")}%' THEN ${
|
|
349
|
-
relevance[3]
|
|
342
|
+
`WHEN ${field} = '${string}' THEN ${relevance[0]
|
|
343
|
+
} WHEN ${field} LIKE '${string}%' THEN ${relevance[1]
|
|
344
|
+
} WHEN ${field} LIKE '%${string}%' THEN ${relevance[2]
|
|
345
|
+
} WHEN ${field} LIKE '%${string.replace(/ /g, "%")}%' THEN ${relevance[3]
|
|
350
346
|
}`
|
|
351
347
|
);
|
|
352
348
|
|
|
@@ -355,12 +351,9 @@ module.exports = function hive(req = {}, res = {}, model = null) {
|
|
|
355
351
|
|
|
356
352
|
if (words.length > 1)
|
|
357
353
|
orderBy.push(
|
|
358
|
-
`WHEN ${field} = '${word}' THEN ${
|
|
359
|
-
|
|
360
|
-
} WHEN ${field} LIKE '
|
|
361
|
-
relevance[4] * (i + 1) + relevance[1]
|
|
362
|
-
} WHEN ${field} LIKE '%${word}%' THEN ${
|
|
363
|
-
relevance[4] * (i + 1) + relevance[2]
|
|
354
|
+
`WHEN ${field} = '${word}' THEN ${relevance[4] * (i + 1)
|
|
355
|
+
} WHEN ${field} LIKE '${word}%' THEN ${relevance[4] * (i + 1) + relevance[1]
|
|
356
|
+
} WHEN ${field} LIKE '%${word}%' THEN ${relevance[4] * (i + 1) + relevance[2]
|
|
364
357
|
}`
|
|
365
358
|
);
|
|
366
359
|
});
|
|
@@ -420,13 +413,15 @@ module.exports = function hive(req = {}, res = {}, model = null) {
|
|
|
420
413
|
(req.onlyFields || {})[model.table] || []
|
|
421
414
|
);
|
|
422
415
|
const sql = beeORM.sqlInsertUpdate(model, data, onlyFields, "UPDATE");
|
|
416
|
+
const where = beeORM.modelSqlWhere(model, ids, req.middleware);
|
|
417
|
+
const binds = [].concat(sql.binds || [], where.binds || []);
|
|
423
418
|
|
|
424
|
-
sql.SQL +=
|
|
419
|
+
sql.SQL += where.SQL;
|
|
425
420
|
sql.SQL += script[0]["where"].length
|
|
426
421
|
? (!ids.length ? " WHERE " : " AND ") + script[0]["where"].join(" AND ")
|
|
427
422
|
: "";
|
|
428
423
|
|
|
429
|
-
data = await dbExec(sql.SQL,
|
|
424
|
+
data = await dbExec(sql.SQL, binds);
|
|
430
425
|
|
|
431
426
|
return { ...this, result: { ...sql.result, ...data } };
|
|
432
427
|
},
|
|
@@ -436,13 +431,15 @@ module.exports = function hive(req = {}, res = {}, model = null) {
|
|
|
436
431
|
|
|
437
432
|
ids = ids && typeof ids !== "object" ? ids.toString().split(",") : ids;
|
|
438
433
|
|
|
434
|
+
const where = beeORM.modelSqlWhere(model, ids, req.middleware);
|
|
435
|
+
|
|
439
436
|
SQL = "DELETE FROM " + q(model.table);
|
|
440
|
-
SQL +=
|
|
437
|
+
SQL += where.SQL
|
|
441
438
|
SQL += script[0]["where"].length
|
|
442
439
|
? (!ids.length ? " WHERE " : " AND ") + script[0]["where"].join(" AND ")
|
|
443
440
|
: "";
|
|
444
441
|
|
|
445
|
-
data = await dbExec(SQL);
|
|
442
|
+
data = await dbExec(SQL, where.binds);
|
|
446
443
|
|
|
447
444
|
return this;
|
|
448
445
|
},
|
package/lib/ORM/beeORM.js
CHANGED
|
@@ -43,80 +43,74 @@ const modelSqlSelectFields = function (model, onlyFields = []) {
|
|
|
43
43
|
model.fields
|
|
44
44
|
? (fields = parseArray(model.fields))
|
|
45
45
|
: Object.keys(model.schema).map((field) => {
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
46
|
+
if (
|
|
47
|
+
model.schema[field].out === false ||
|
|
48
|
+
(onlyFields.length && !onlyFields.includes(field))
|
|
49
|
+
)
|
|
50
|
+
return;
|
|
51
51
|
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
52
|
+
switch (model.schema[field].type) {
|
|
53
|
+
case "uuid":
|
|
54
|
+
case "guid":
|
|
55
|
+
fields.push(`BIN_TO_UUID(${model.table}.${field}) as ${field}`);
|
|
56
|
+
break;
|
|
57
|
+
default:
|
|
58
|
+
fields.push(`${model.table}.${field}`);
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
61
|
|
|
62
62
|
return fields;
|
|
63
63
|
};
|
|
64
64
|
|
|
65
65
|
const modelSqlWhere = function (
|
|
66
66
|
model,
|
|
67
|
-
|
|
67
|
+
ids,
|
|
68
68
|
middlewareParams,
|
|
69
69
|
callsWhere = []
|
|
70
70
|
) {
|
|
71
71
|
const q = quote;
|
|
72
72
|
const keys = parseArray(model.indexes?.keys || "");
|
|
73
|
+
const placeholders = [];
|
|
73
74
|
|
|
74
75
|
let SQL = "";
|
|
75
76
|
let gWhere = model.globalWhere ? q(model.globalWhere, "()") : "";
|
|
76
77
|
|
|
78
|
+
ids = typeof ids === "object" ? ids : [ids];
|
|
79
|
+
|
|
77
80
|
gWhere =
|
|
78
81
|
gWhere && middlewareParams ? stringBind(gWhere, middlewareParams) : "";
|
|
79
82
|
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
keys.map((k) => {
|
|
84
|
-
switch (
|
|
85
|
-
model.schema[k].type //TODO encapsule
|
|
86
|
-
) {
|
|
83
|
+
ids.forEach((id, i) => {
|
|
84
|
+
keys.forEach((key) => {
|
|
85
|
+
switch (model.schema[key].type) {
|
|
87
86
|
case "guid":
|
|
88
87
|
case "uuid":
|
|
89
|
-
|
|
88
|
+
ids[i] = Buffer.from(id.replace(/-/g, ''), 'hex');
|
|
90
89
|
break;
|
|
91
90
|
default:
|
|
92
|
-
|
|
91
|
+
ids[i] = `'${id}'`;
|
|
93
92
|
}
|
|
94
|
-
})
|
|
95
|
-
);
|
|
93
|
+
});
|
|
96
94
|
|
|
97
|
-
|
|
95
|
+
placeholders.push("?");
|
|
96
|
+
});
|
|
97
|
+
|
|
98
|
+
switch (ids.length) {
|
|
98
99
|
case 0:
|
|
99
100
|
SQL += gWhere ? ` WHERE ${gWhere}` : "";
|
|
100
101
|
break;
|
|
101
102
|
case 1:
|
|
102
|
-
SQL += ` WHERE ${model.table}.${keys[0]} = ${
|
|
103
|
-
gWhere ? "AND " + gWhere : ""
|
|
104
|
-
}`;
|
|
103
|
+
SQL += ` WHERE ${model.table}.${keys[0]} = ? ${gWhere ? "AND " + gWhere : ""}`;
|
|
105
104
|
break;
|
|
106
105
|
default:
|
|
107
|
-
SQL +=
|
|
108
|
-
typeof vals == "object"
|
|
109
|
-
? ` WHERE ${model.table}.${keys[0]} IN('${vals.join("','")}') ${
|
|
110
|
-
gWhere ? "AND " + gWhere : ""
|
|
111
|
-
}`
|
|
112
|
-
: ` WHERE ${model.table}.${keys[0]} IN(${vals}) ${
|
|
113
|
-
gWhere ? "AND " + gWhere : ""
|
|
114
|
-
}`;
|
|
106
|
+
SQL += ` WHERE ${model.table}.${keys[0]} IN(${placeholders.join(",")}) ${gWhere ? "AND " + gWhere : ""}`;
|
|
115
107
|
}
|
|
116
108
|
|
|
117
109
|
if (callsWhere.length) SQL += `WHERE ${callsWhere.join(" AND ")}`;
|
|
118
110
|
|
|
119
|
-
|
|
111
|
+
console.log({ ids });
|
|
112
|
+
|
|
113
|
+
return { SQL, binds: ids };
|
|
120
114
|
};
|
|
121
115
|
|
|
122
116
|
module.exports = {
|
|
@@ -194,7 +188,7 @@ module.exports = {
|
|
|
194
188
|
SQL.push(`SELECT ${fields.join(", ")} `);
|
|
195
189
|
SQL.push(`FROM ${quote(model.table)} `);
|
|
196
190
|
SQL.push(joins);
|
|
197
|
-
SQL.push(where);
|
|
191
|
+
SQL.push(where.SQL);
|
|
198
192
|
SQL.push(order);
|
|
199
193
|
SQL.push(limit);
|
|
200
194
|
|
|
@@ -279,8 +273,8 @@ module.exports = {
|
|
|
279
273
|
let SQL =
|
|
280
274
|
statement === "INSERT"
|
|
281
275
|
? `INSERT INTO ${model.table} (${fields.join(
|
|
282
|
-
|
|
283
|
-
|
|
276
|
+
","
|
|
277
|
+
)}) VALUES (${insertValues.join("),(")})`
|
|
284
278
|
: `UPDATE ${model.table} SET ${values.join(",")}`;
|
|
285
279
|
|
|
286
280
|
return { result, SQL, binds };
|
package/package.json
CHANGED