@bee.js/node 0.0.40 → 0.0.42

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
@@ -284,6 +284,13 @@ module.exports = function hive(req = {}, res = {}, model = null) {
284
284
  return this
285
285
  },
286
286
 
287
+ orderByIf: function(condition, ...fields) {
288
+ if (condition)
289
+ script[0]['orderBy'].push(fields.join(', '))
290
+
291
+ return this
292
+ },
293
+
287
294
  limit: function(...params) {
288
295
 
289
296
  script[0]['limit'].push(params.join(","))
package/lib/DBA/beeDBA.js CHANGED
@@ -1,119 +1,131 @@
1
- const beeORM = require('../ORM/beeORM')
2
- const beeHive = require('../../beehive')
1
+ const beeORM = require("../ORM/beeORM");
2
+ const beeHive = require("../../beehive");
3
3
 
4
4
  const fieldType = {
5
- mysql : function(field) {
6
- let type = field.type.split(' ')[0].trim()
7
-
8
- switch (type) {
9
- case 'integer':
10
- case 'int':
11
- type = 'int'
12
- break
13
- case 'decimal':
14
- type = `decimal(${(field.length || 10.1).toString().replace('.',',')})`
15
- break
16
-
17
- case 'string':
18
- case 'varchar':
19
- type = `varchar(${field.length || 45})`
20
- break
21
- case 'guid':
22
- type = `binary(16)`
23
- field.ai = false
24
- break
25
- case 'char':
26
- type = `char(${field.length || 5})`
27
- break
28
- }
29
- return type
30
- + (!field.null ? ' NOT NULL' : '')
31
- + (field.ai ? ' AUTO_INCREMENT' : '')
32
- + (field.default !== undefined ? ` DEFAULT ${field.default}` : '')
33
- + (field.default !== undefined && field.onUpdate ? ` ON UPDATE ${field.default}` : '')
5
+ mysql: function (field) {
6
+ let type = field.type.split(" ")[0].trim();
7
+
8
+ switch (type) {
9
+ case "integer":
10
+ case "int":
11
+ type = "int";
12
+ break;
13
+ case "decimal":
14
+ type = `decimal(${(field.length || 10.1)
15
+ .toString()
16
+ .replace(".", ",")})`;
17
+ break;
18
+
19
+ case "string":
20
+ case "varchar":
21
+ type = `varchar(${field.length || 45})`;
22
+ break;
23
+ case "guid":
24
+ type = `binary(16)`;
25
+ field.ai = false;
26
+ break;
27
+ case "char":
28
+ type = `char(${field.length || 5})`;
29
+ break;
30
+ case "file":
31
+ type = "blob";
32
+ break;
34
33
  }
35
- }
34
+ return (
35
+ type +
36
+ (!field.null ? " NOT NULL" : "") +
37
+ (field.ai ? " AUTO_INCREMENT" : "") +
38
+ (field.default !== undefined ? ` DEFAULT ${field.default}` : "") +
39
+ (field.default !== undefined && field.onUpdate
40
+ ? ` ON UPDATE ${field.default}`
41
+ : "")
42
+ );
43
+ },
44
+ };
36
45
 
37
46
  module.exports.actions = {
38
- mysql : {
39
- MODEL_STATEMENT_EXECUTE : async function(req, res) {
40
- let hive = beeHive()
41
- let data = await hive.dbExec(req.body.statement_execute)
42
-
43
- res.status(200).send({data: data})
44
- },
45
-
46
- MODEL_CREATE_DB : function(req, res) {
47
- let configsDB = global.configs.databases.default
48
- let models = global.models
49
- let SQL = ['','']
50
-
51
- //TODO create db with user permissions
52
-
53
- Object
54
- .keys(models)
55
- .map((model)=> {
56
- if(!req.body.models[model]._checked) return
57
-
58
- SQL[0] += this.MODEL_CREATE_TABLE(models[model], configsDB)
59
- SQL[1] += models[model].relations
60
- ? this.MODEL_CREATE_CONSTRAINT(models[model], configsDB)
61
- : ''
62
- })
63
-
64
- res.status(200).send({data: SQL.join("")})
65
- },
66
-
67
- MODEL_CREATE_TABLE : function(model, configsDB) {
68
- let q = beeORM.quote
69
- let SQL = ''
70
-
71
-
72
- SQL = `CREATE TABLE IF NOT EXISTS ${q(model.table)} (`
73
-
74
- for(let field in model.schema)
75
- SQL += `\n ${q(field)} ${fieldType[configsDB.drive](model.schema[field])},` // TODO criar funcao para relacionamentos.
76
-
77
- SQL = SQL.slice(0, SQL.length - 1)
78
-
79
- if(model.indexes) {
80
- if(model.indexes.keys)
81
- SQL += `,\n PRIMARY KEY (${q(model.indexes.keys)})`
82
-
83
- //TODO fazer uniques e cia. colocar em funcao.
84
- }
85
-
86
- SQL += `\n) ENGINE=${configsDB.engine} DEFAULT CHARSET=${configsDB.charset};\n\n`
87
-
88
- return SQL
89
- },
90
-
91
- MODEL_CREATE_CONSTRAINT : function(model, configsDB) {
92
- let q = beeORM.quote
93
- let SQL = '\n\n\n\n'
94
-
95
- SQL += `----- Constraints for table ${q(model.table)} -----\n\n`
96
- SQL += `ALTER TABLE ${q(model.table)}\n`
97
-
98
- for(let field in model.relations)
99
- SQL += ` ADD CONSTRAINT ${q('FK_'+model.relations[field].split('.')[0])}
100
- FOREIGN KEY ${q(field)}
101
- REFERENCES ${model.relations[field].split('.')[0]}(${q('FK_'+model.relations[field].split('.')[0])})
102
- ON DELETE CASCATE ON UPDATE CASCATE;
103
- \n\n`
104
-
105
- //SQL += `-- COMMIT; \n\n`
106
-
107
- return SQL
108
- }
47
+ mysql: {
48
+ MODEL_STATEMENT_EXECUTE: async function (req, res) {
49
+ let hive = beeHive();
50
+ let data = await hive.dbExec(req.body.statement_execute);
51
+
52
+ res.status(200).send({ data: data });
109
53
  },
110
54
 
111
- mssql : {
112
- // TODO next version
55
+ MODEL_CREATE_DB: function (req, res) {
56
+ let configsDB = global.configs.databases.default;
57
+ let models = global.models;
58
+ let SQL = ["", ""];
59
+
60
+ //TODO create db with user permissions
61
+
62
+ Object.keys(models).map((model) => {
63
+ if (!req.body.models[model]._checked) return;
64
+
65
+ SQL[0] += this.MODEL_CREATE_TABLE(models[model], configsDB);
66
+ SQL[1] += models[model].relations
67
+ ? this.MODEL_CREATE_CONSTRAINT(models[model], configsDB)
68
+ : "";
69
+ });
70
+
71
+ res.status(200).send({ data: SQL.join("") });
113
72
  },
114
73
 
115
- mongoDB : {
116
- // TODO next version
117
- }
118
-
119
- }
74
+ MODEL_CREATE_TABLE: function (model, configsDB) {
75
+ let q = beeORM.quote;
76
+ let SQL = "";
77
+
78
+ SQL = `CREATE TABLE IF NOT EXISTS ${q(model.table)} (`;
79
+
80
+ for (let field in model.schema)
81
+ SQL += `\n ${q(field)} ${fieldType[configsDB.drive](
82
+ model.schema[field]
83
+ )},`; // TODO criar funcao para relacionamentos.
84
+
85
+ SQL = SQL.slice(0, SQL.length - 1);
86
+
87
+ if (model.indexes) {
88
+ if (model.indexes.keys)
89
+ SQL += `,\n PRIMARY KEY (${q(model.indexes.keys)})`;
90
+
91
+ //TODO fazer uniques e cia. colocar em funcao.
92
+ }
93
+
94
+ SQL += `\n) ENGINE=${configsDB.engine} DEFAULT CHARSET=${configsDB.charset};\n\n`;
95
+
96
+ return SQL;
97
+ },
98
+
99
+ MODEL_CREATE_CONSTRAINT: function (model, configsDB) {
100
+ let q = beeORM.quote;
101
+ let SQL = "\n\n\n\n";
102
+
103
+ SQL += `/*----- Constraints for table ${q(model.table)} -----*/\n\n`;
104
+ SQL += `ALTER TABLE ${q(model.table)}\n`;
105
+
106
+ for (let field in model.relations)
107
+ SQL += ` ADD CONSTRAINT ${q(
108
+ `FK_${model.relations[field].split(".")[0]}_X_${model.table}_${field}`
109
+ )}
110
+ FOREIGN KEY (${field})
111
+ REFERENCES ${
112
+ model.relations[field].split(".")[0]
113
+ } (${field})
114
+ ${"ON DELETE CASCADE"}
115
+ ${"ON UPDATE CASCADE"};
116
+ \n\n`;
117
+
118
+ //SQL += `-- COMMIT; \n\n`
119
+
120
+ return SQL;
121
+ },
122
+ },
123
+
124
+ mssql: {
125
+ // TODO next version
126
+ },
127
+
128
+ mongoDB: {
129
+ // TODO next version
130
+ },
131
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bee.js/node",
3
- "version": "0.0.40",
3
+ "version": "0.0.42",
4
4
  "description": "A JavaScript framework for making Node.js API´s",
5
5
  "main": "index.js",
6
6
  "scripts": {