@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 +7 -0
- package/lib/DBA/beeDBA.js +122 -110
- package/package.json +1 -1
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
|
|
2
|
-
const beeHive = require(
|
|
1
|
+
const beeORM = require("../ORM/beeORM");
|
|
2
|
+
const beeHive = require("../../beehive");
|
|
3
3
|
|
|
4
4
|
const fieldType = {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
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
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
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
|
-
|
|
112
|
-
|
|
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
|
-
|
|
116
|
-
|
|
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
|
+
};
|