@bee.js/node 0.0.92 → 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 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 JOIN|LEFT JOIN|RIGHT JOIN|GROUP BY|ORDER BY|LIMIT)\b/gi,
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
- _parentTable
143
- )}.${_parentField} = ${models[modelName].table}.${_relField} `
143
+ _parentTable
144
+ )}.${_parentField} = ${models[modelName].table}.${_relField} `
144
145
  : relJoin[_parentTable] +
145
- `AND ${q(_parentTable)}.${_parentField} = ${
146
- models[modelName].table
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
- relevance[0]
344
- } WHEN ${field} LIKE '${string}%' THEN ${
345
- relevance[1]
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
- relevance[4] * (i + 1)
360
- } WHEN ${field} LIKE '${word}%' THEN ${
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 += beeORM.modelSqlWhere(model, ids, req.middleware);
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, sql.binds);
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 += beeORM.modelSqlWhere(model, ids, req.middleware);
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/DBA/beeDBA.js CHANGED
@@ -54,14 +54,13 @@ module.exports.actions = {
54
54
  },
55
55
 
56
56
  MODEL_CREATE_DB: function (req, res) {
57
- let configsDB = global.configs.databases.default;
58
- let models = global.models;
59
- let SQL = ["", ""];
57
+ const configsDB = global.configs.databases.default;
58
+ const models = global.models;
59
+ const SQL = ["", ""];
60
60
 
61
61
  //TODO create db with user permissions
62
-
63
62
  Object.keys(models).map((model) => {
64
- if (!req.body.models[model]._checked) return;
63
+ if (!req.body?.models?.[model]?._checked) return;
65
64
 
66
65
  SQL[0] += this.MODEL_CREATE_TABLE(models[model], configsDB);
67
66
  SQL[1] += models[model].relations
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
- if (
47
- model.schema[field].out === false ||
48
- (onlyFields.length && !onlyFields.includes(field))
49
- )
50
- return;
46
+ if (
47
+ model.schema[field].out === false ||
48
+ (onlyFields.length && !onlyFields.includes(field))
49
+ )
50
+ return;
51
51
 
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
- });
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
- vals,
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
- if (typeof vals !== "object") vals = [vals];
81
-
82
- vals.map((val, i) =>
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
- vals[i] = `UUID_TO_BIN('${val}')`;
88
+ ids[i] = Buffer.from(id.replace(/-/g, ''), 'hex');
90
89
  break;
91
90
  default:
92
- vals[i] = `'${val}'`;
91
+ ids[i] = `'${id}'`;
93
92
  }
94
- })
95
- );
93
+ });
96
94
 
97
- switch (vals.length) {
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]} = ${vals[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
- return SQL;
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
- )}) VALUES (${insertValues.join("),(")})`
276
+ ","
277
+ )}) VALUES (${insertValues.join("),(")})`
284
278
  : `UPDATE ${model.table} SET ${values.join(",")}`;
285
279
 
286
280
  return { result, SQL, binds };
@@ -1,9 +1,9 @@
1
1
  const express = require("express");
2
- const log = require("./log");
3
2
  const route = require("../WEB/route");
4
- const bodyParser = require("body-parser");
5
- const headers = require("./headers");
6
3
  const freeRoute = require("../WEB/freeRoute");
4
+ const log = require("./log");
5
+ const headers = require("./headers");
6
+ const bodyParser = require("body-parser");
7
7
 
8
8
  module.exports = function () {
9
9
  if (!global.routes) return;
@@ -35,17 +35,19 @@ module.exports = function () {
35
35
 
36
36
  router.use(
37
37
  bodyParser.urlencoded({
38
- limit: "10mb",
38
+ limit: "20mb",
39
39
  extended: true,
40
40
  parameterLimit: 50000,
41
41
  })
42
42
  );
43
- router.use(bodyParser.json({ extended: true, limit: "10mb" }));
43
+
44
+ router.use(bodyParser.json({ extended: true, limit: "20mb" }));
44
45
  router.use(bodyParser.raw());
45
46
  router.use((req, res, next) => headers({ req, res, next, router, configs }));
46
47
  });
47
48
 
48
- log(`${Object.keys(global.routes).length} route(s)`);
49
+ log(`${Object.keys(global.routes).length} route(s) 222222
50
+ `);
49
51
 
50
52
  return router;
51
53
  };
@@ -1,5 +1,6 @@
1
1
  const log = require("./log");
2
2
  const beeDEV = require("../DEV/beeDEV");
3
+ const bodyParser = require('body-parser');
3
4
  const http = require("http");
4
5
  const https = require("https");
5
6
  const fs = require("fs");
@@ -8,12 +9,13 @@ const WebSocket = require("ws");
8
9
  const servers = { http: null, https: null };
9
10
 
10
11
  module.exports = function (app, options = {}) {
12
+ if (process.argv.includes("--dev"))
13
+ app.post("/beedev/:action", bodyParser.json(), beeDEV);
14
+
11
15
  const ports = (global.configs.port || global.configs.ports || 1987.443)
12
16
  .toString()
13
17
  .split(".");
14
18
 
15
- app.post("/beedev/:action", beeDEV); //TODO check security and create a method for define enable/disable
16
-
17
19
  servers.http = http.createServer(app);
18
20
 
19
21
  if (options.ws) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bee.js/node",
3
- "version": "0.0.92",
3
+ "version": "0.0.94",
4
4
  "description": "A JavaScript framework for making Node.js API´s",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -19,7 +19,9 @@
19
19
  "MySQL GUID",
20
20
  "JWT",
21
21
  "Scheduler",
22
- "Deploy"
22
+ "Deploy",
23
+ "AI",
24
+ "MCP"
23
25
  ],
24
26
  "author": "Arnaldo Liberal dos Santos - arnaldo.liberal@outlook.com",
25
27
  "homepage": "https://beejs.org",
@@ -38,4 +40,4 @@
38
40
  "uuid": "^9.0.0",
39
41
  "ws": "^8.18.1"
40
42
  }
41
- }
43
+ }