@bee.js/node 0.0.93 → 0.0.95
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 +40 -43
- 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
|
+
});
|
|
94
|
+
|
|
95
|
+
placeholders.push("?");
|
|
96
|
+
});
|
|
96
97
|
|
|
97
|
-
switch (
|
|
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 = {
|
|
@@ -128,6 +122,7 @@ module.exports = {
|
|
|
128
122
|
modelSqlSelectFields,
|
|
129
123
|
|
|
130
124
|
createPool: function (configs) {
|
|
125
|
+
if (global.beeDBPool) return global.beeDBPool;
|
|
131
126
|
// TODO criar aviso de error para falta de configs.db. Criar no hive().create
|
|
132
127
|
|
|
133
128
|
// TODO pegar dinamicamnete database utilizada
|
|
@@ -152,7 +147,7 @@ module.exports = {
|
|
|
152
147
|
password: db.pass,
|
|
153
148
|
database: db.name,
|
|
154
149
|
waitForConnections: db.waitForConnections || true,
|
|
155
|
-
connectionLimit: db.connectionLimit ||
|
|
150
|
+
connectionLimit: db.connectionLimit || 100,
|
|
156
151
|
queueLimit: db.queueLimit || 0,
|
|
157
152
|
});
|
|
158
153
|
|
|
@@ -168,6 +163,8 @@ module.exports = {
|
|
|
168
163
|
}
|
|
169
164
|
}, db.ping);
|
|
170
165
|
|
|
166
|
+
global.beeDBPool = pool;
|
|
167
|
+
|
|
171
168
|
return pool;
|
|
172
169
|
}
|
|
173
170
|
},
|
|
@@ -194,7 +191,7 @@ module.exports = {
|
|
|
194
191
|
SQL.push(`SELECT ${fields.join(", ")} `);
|
|
195
192
|
SQL.push(`FROM ${quote(model.table)} `);
|
|
196
193
|
SQL.push(joins);
|
|
197
|
-
SQL.push(where);
|
|
194
|
+
SQL.push(where.SQL);
|
|
198
195
|
SQL.push(order);
|
|
199
196
|
SQL.push(limit);
|
|
200
197
|
|
|
@@ -279,8 +276,8 @@ module.exports = {
|
|
|
279
276
|
let SQL =
|
|
280
277
|
statement === "INSERT"
|
|
281
278
|
? `INSERT INTO ${model.table} (${fields.join(
|
|
282
|
-
|
|
283
|
-
|
|
279
|
+
","
|
|
280
|
+
)}) VALUES (${insertValues.join("),(")})`
|
|
284
281
|
: `UPDATE ${model.table} SET ${values.join(",")}`;
|
|
285
282
|
|
|
286
283
|
return { result, SQL, binds };
|
package/package.json
CHANGED