beech-api 3.8.0 → 3.9.75
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/LICENSE +21 -21
- package/README.md +1715 -1244
- package/index.js +2 -2
- package/package.json +92 -83
- package/packages/cli/beech +9 -10
- package/packages/cli/bin/beech-app.js +389 -389
- package/packages/cli/bin/beech-service.js +262 -132
- package/packages/cli/core/auth/Credentials.js +174 -147
- package/packages/cli/core/auth/Passport.js +664 -592
- package/packages/cli/core/auth/_Request.js +12 -12
- package/packages/cli/core/configure/_gitignore +16 -15
- package/packages/cli/core/configure/_sequelizerc +9 -9
- package/packages/cli/core/configure/app.config-basic.js +55 -55
- package/packages/cli/core/configure/app.config-sequelize.js +88 -88
- package/packages/cli/core/configure/beech.config.js +9 -9
- package/packages/cli/core/configure/global.config-basic.js +8 -8
- package/packages/cli/core/configure/global.config-sequelize.js +8 -8
- package/packages/cli/core/configure/jest.config.js +6 -6
- package/packages/cli/core/configure/jsconfig.json +8 -7
- package/packages/cli/core/configure/passport.config.js +97 -97
- package/packages/cli/core/databases/mysql.js +94 -95
- package/packages/cli/core/databases/sequelize.js +187 -179
- package/packages/cli/core/databases/test.js +251 -170
- package/packages/cli/core/file-walk/file-walk.js +35 -35
- package/packages/cli/core/generator/_endpoints +15 -15
- package/packages/cli/core/generator/_endpoints_basic +42 -42
- package/packages/cli/core/generator/_help +26 -18
- package/packages/cli/core/generator/_help_create +10 -10
- package/packages/cli/core/generator/_help_service +10 -10
- package/packages/cli/core/generator/_helpers +9 -9
- package/packages/cli/core/generator/_helpers_basic +22 -22
- package/packages/cli/core/generator/_models +6 -29
- package/packages/cli/core/generator/_models_basic +13 -22
- package/packages/cli/core/generator/_package +23 -20
- package/packages/cli/core/generator/_scheduler +32 -22
- package/packages/cli/core/generator/_spec +29 -29
- package/packages/cli/core/generator/index.js +1081 -738
- package/packages/cli/core/helpers/2fa.js +106 -85
- package/packages/cli/core/helpers/math.js +115 -103
- package/packages/cli/core/helpers/poolEntity.js +103 -59
- package/packages/cli/core/index.js +264 -188
- package/packages/cli/core/middleware/express/duplicateRequest.js +16 -12
- package/packages/cli/core/middleware/express/jwtCheckAllow.js +86 -68
- package/packages/cli/core/middleware/express/rateLimit.js +29 -17
- package/packages/cli/core/middleware/express/slowDown.js +2 -2
- package/packages/cli/core/middleware/index.js +6 -6
- package/packages/cli/core/middleware/origin/guard/advance.js +75 -74
- package/packages/cli/core/middleware/origin/whitelist/cors.js +94 -94
- package/packages/cli/core/services/http.express.js +481 -441
- package/packages/cli/core/test/check-node.js +21 -0
- package/packages/cli/core/test/utils.js +7 -7
- package/packages/cli/entry +10 -0
- package/packages/lib/index.js +6 -6
- package/packages/lib/src/endpoint.js +947 -532
- package/packages/lib/src/guard.js +60 -60
- package/packages/lib/src/salt.js +3 -3
- package/packages/lib/src/schema.js +96 -93
- package/packages/lib/src/specificExpress.js +7 -7
- package/packages/lib/src/user.js +271 -271
|
@@ -1,96 +1,95 @@
|
|
|
1
|
-
const mysql = require("mysql");
|
|
2
|
-
const { DeHashIt, M, X } = require(__dirname + "/../helpers/math");
|
|
3
|
-
global.sql = {};
|
|
4
|
-
|
|
5
|
-
exports.connect = () => {
|
|
6
|
-
return new Promise((resolve, reject) => {
|
|
7
|
-
try {
|
|
8
|
-
mysqlInProcess(_config_.database_config, true, (err, result) => {
|
|
9
|
-
if (!err) {
|
|
10
|
-
resolve(result);
|
|
11
|
-
} else {
|
|
12
|
-
reject(err);
|
|
13
|
-
}
|
|
14
|
-
});
|
|
15
|
-
} catch (error) {
|
|
16
|
-
reject(error);
|
|
17
|
-
}
|
|
18
|
-
})
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
mysqlInProcess = (database_config, headDbShow, cb) => {
|
|
22
|
-
try {
|
|
23
|
-
let val = database_config.shift();
|
|
24
|
-
// checking turn on db connect
|
|
25
|
-
if (val.is_connect) {
|
|
26
|
-
const promise = new Promise((resolve) => {
|
|
27
|
-
// check hash ?
|
|
28
|
-
if(val.username && val.password) {
|
|
29
|
-
if(val.username.length < 55 || val.password < 55) {
|
|
30
|
-
return cb("Error:
|
|
31
|
-
}
|
|
32
|
-
let accessDb = [];
|
|
33
|
-
[val.username, val.password].
|
|
34
|
-
DeHashIt(e.toString(), null, (17).toString().slice(0
|
|
35
|
-
if(
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
}
|
|
1
|
+
const mysql = require("mysql");
|
|
2
|
+
const { DeHashIt, M, X } = require(__dirname + "/../helpers/math");
|
|
3
|
+
global.sql = {};
|
|
4
|
+
|
|
5
|
+
exports.connect = () => {
|
|
6
|
+
return new Promise((resolve, reject) => {
|
|
7
|
+
try {
|
|
8
|
+
mysqlInProcess(_config_.database_config, true, (err, result) => {
|
|
9
|
+
if (!err) {
|
|
10
|
+
resolve(result);
|
|
11
|
+
} else {
|
|
12
|
+
reject(err);
|
|
13
|
+
}
|
|
14
|
+
});
|
|
15
|
+
} catch (error) {
|
|
16
|
+
reject(error);
|
|
17
|
+
}
|
|
18
|
+
})
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
mysqlInProcess = (database_config, headDbShow, cb) => {
|
|
22
|
+
try {
|
|
23
|
+
let val = database_config.shift();
|
|
24
|
+
// checking turn on db connect
|
|
25
|
+
if (val.is_connect) {
|
|
26
|
+
const promise = new Promise((resolve) => {
|
|
27
|
+
// check hash ?
|
|
28
|
+
if(val.username && val.password) {
|
|
29
|
+
if(val.username.length < 55 || val.password < 55) {
|
|
30
|
+
return cb("Error: Incorrect Hash access for connect to database.\n", null);
|
|
31
|
+
}
|
|
32
|
+
let accessDb = [];
|
|
33
|
+
[val.username, val.password].forEach((e, k) => {
|
|
34
|
+
DeHashIt(e.toString(), null, (17).toString().slice(0, -1).length, (err, d) => {
|
|
35
|
+
if (err) return reject(err);
|
|
36
|
+
accessDb[k] = d.split("sh,")[1].split(M(X).toString().slice(0, 2) + M(X).toString())[0].slice(0, -1);
|
|
37
|
+
if (accessDb[0] !== undefined && accessDb[1] !== undefined) {
|
|
38
|
+
resolve(accessDb);
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
});
|
|
42
|
+
} else {
|
|
43
|
+
resolve([null, null]);
|
|
44
|
+
}
|
|
45
|
+
});
|
|
46
|
+
Promise.all([promise]).then(final => {
|
|
47
|
+
// db connection config
|
|
48
|
+
let connection = mysql.createConnection({
|
|
49
|
+
host: val.host,
|
|
50
|
+
user: final[0][0],
|
|
51
|
+
password: final[0][1],
|
|
52
|
+
database: val.database,
|
|
53
|
+
charset: val.charset,
|
|
54
|
+
port: val.port
|
|
55
|
+
});
|
|
56
|
+
// db connecting
|
|
57
|
+
connection.connect(err => {
|
|
58
|
+
if (!err) {
|
|
59
|
+
// show only one text db connnections
|
|
60
|
+
if (headDbShow) {
|
|
61
|
+
console.log('[102m[90m Passed [0m [0mDatabase is connected at:');
|
|
62
|
+
headDbShow = false;
|
|
63
|
+
}
|
|
64
|
+
// declare to global mysql variable
|
|
65
|
+
sql[ val.name ] = connection;
|
|
66
|
+
console.log('-[36m ' + val.name + ' [0m->[93m ' + connection.config.database + ':' + connection.config.port + '[0m');
|
|
67
|
+
// checking recursive database connection
|
|
68
|
+
if (database_config.length > 0) {
|
|
69
|
+
mysqlInProcess(database_config, headDbShow, e => {
|
|
70
|
+
cb(e, true);
|
|
71
|
+
});
|
|
72
|
+
} else {
|
|
73
|
+
// perfectly recursive
|
|
74
|
+
cb(err, true);
|
|
75
|
+
}
|
|
76
|
+
} else {
|
|
77
|
+
console.log('[101m Failed [0m [91mDatabase `' + val.name + '` is connect failed.[0m');
|
|
78
|
+
cb(err, null);
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
});
|
|
82
|
+
} else {
|
|
83
|
+
if (database_config.length > 0) {
|
|
84
|
+
mysqlInProcess(database_config, headDbShow, e => {
|
|
85
|
+
cb(e, true);
|
|
86
|
+
});
|
|
87
|
+
} else {
|
|
88
|
+
// perfectly recursive
|
|
89
|
+
cb(null, true);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
} catch (error) {
|
|
93
|
+
cb(error, null);
|
|
94
|
+
}
|
|
96
95
|
}
|
|
@@ -1,180 +1,188 @@
|
|
|
1
|
-
const Sequelize = require('sequelize');
|
|
2
|
-
const { DeHashIt, M, X } = require(__dirname + "/../helpers/math");
|
|
3
|
-
global.sql = {};
|
|
4
|
-
|
|
5
|
-
exports.connect = () => {
|
|
6
|
-
return new Promise((resolve, reject) => {
|
|
7
|
-
try {
|
|
8
|
-
connectInProcess(_config_.database_config, true, (err, result) => {
|
|
9
|
-
if (!err) {
|
|
10
|
-
resolve(result);
|
|
11
|
-
} else {
|
|
12
|
-
reject(err);
|
|
13
|
-
}
|
|
14
|
-
});
|
|
15
|
-
} catch (error) {
|
|
16
|
-
reject(error);
|
|
17
|
-
}
|
|
18
|
-
})
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
connectInProcess = async (database_config, headDbShow, cb) => {
|
|
22
|
-
try {
|
|
23
|
-
let val = database_config.shift();
|
|
24
|
-
// checking turn on db connect
|
|
25
|
-
if (val.is_connect) {
|
|
26
|
-
const promise = new Promise((resolve) => {
|
|
27
|
-
// check hash ?
|
|
28
|
-
if(val.username && val.password) {
|
|
29
|
-
if(val.username.length < 55 || val.password < 55) {
|
|
30
|
-
return cb("Error:
|
|
31
|
-
}
|
|
32
|
-
let accessDb = [];
|
|
33
|
-
[val.username, val.password].
|
|
34
|
-
DeHashIt(e.toString(), null, (17).toString().slice(0
|
|
35
|
-
if(
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
//
|
|
53
|
-
//
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
//
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
//
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
//
|
|
75
|
-
// -
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
//
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
//
|
|
89
|
-
//
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
//
|
|
94
|
-
//
|
|
95
|
-
//
|
|
96
|
-
//
|
|
97
|
-
//
|
|
98
|
-
//
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
//
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
console.log('
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
1
|
+
const Sequelize = require('sequelize');
|
|
2
|
+
const { DeHashIt, M, X } = require(__dirname + "/../helpers/math");
|
|
3
|
+
global.sql = {};
|
|
4
|
+
|
|
5
|
+
exports.connect = () => {
|
|
6
|
+
return new Promise((resolve, reject) => {
|
|
7
|
+
try {
|
|
8
|
+
connectInProcess(_config_.database_config, true, (err, result) => {
|
|
9
|
+
if (!err) {
|
|
10
|
+
resolve(result);
|
|
11
|
+
} else {
|
|
12
|
+
reject(err);
|
|
13
|
+
}
|
|
14
|
+
});
|
|
15
|
+
} catch (error) {
|
|
16
|
+
reject(error);
|
|
17
|
+
}
|
|
18
|
+
})
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
connectInProcess = async (database_config, headDbShow, cb) => {
|
|
22
|
+
try {
|
|
23
|
+
let val = database_config.shift();
|
|
24
|
+
// checking turn on db connect
|
|
25
|
+
if (val.is_connect) {
|
|
26
|
+
const promise = new Promise((resolve) => {
|
|
27
|
+
// check hash ?
|
|
28
|
+
if(val.username && val.password) {
|
|
29
|
+
if(val.username.length < 55 || val.password < 55) {
|
|
30
|
+
return cb("Error: Incorrect Hash access for connect to database.\n", null);
|
|
31
|
+
}
|
|
32
|
+
let accessDb = [];
|
|
33
|
+
[val.username, val.password].forEach((e, k) => {
|
|
34
|
+
DeHashIt(e.toString(), null, (17).toString().slice(0, -1).length, (err, d) => {
|
|
35
|
+
if (err) return reject(err);
|
|
36
|
+
accessDb[k] = d.split("sh,")[1].split(M(X).toString().slice(0, 2) + M(X).toString())[0].slice(0, -1);
|
|
37
|
+
if (accessDb[0] !== undefined && accessDb[1] !== undefined) {
|
|
38
|
+
resolve(accessDb);
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
});
|
|
42
|
+
} else {
|
|
43
|
+
resolve([null, null]);
|
|
44
|
+
}
|
|
45
|
+
});
|
|
46
|
+
Promise.all([promise]).then(async (final) => {
|
|
47
|
+
const sq = await new Sequelize({
|
|
48
|
+
// one of 'mysql' | 'sqlite' | 'mariadb' | 'postgres' | 'mssql'
|
|
49
|
+
dialect: val.dialect || "mysql",
|
|
50
|
+
|
|
51
|
+
// for postgres, you can also specify an absolute path to a directory
|
|
52
|
+
// containing a UNIX socket to connect over
|
|
53
|
+
// host: '/sockets/psql_sockets'.
|
|
54
|
+
host: (val.host == "localhost" || val.host == "http://localhost") ? "127.0.0.1" : val.host,
|
|
55
|
+
username: final[0][0],
|
|
56
|
+
password: final[0][1],
|
|
57
|
+
database: val.database,
|
|
58
|
+
port: val.port,
|
|
59
|
+
|
|
60
|
+
// set connection timezone
|
|
61
|
+
timezone: val.timezone || "+00:00",
|
|
62
|
+
|
|
63
|
+
// the storage engine for sqlite
|
|
64
|
+
// - default ':memory:'
|
|
65
|
+
storage: val.storage || ":memory:",
|
|
66
|
+
|
|
67
|
+
// custom protocol; default: 'tcp'
|
|
68
|
+
// postgres only, useful for Heroku
|
|
69
|
+
protocol: val.protocol || null,
|
|
70
|
+
// disable logging or provide a custom logging function; default: console.log
|
|
71
|
+
logging: val.logging || false,
|
|
72
|
+
|
|
73
|
+
// you can also pass any dialect options to the underlying dialect library
|
|
74
|
+
// - default is empty
|
|
75
|
+
// - currently supported: 'mysql', 'postgres', 'mssql'
|
|
76
|
+
dialectOptions: {
|
|
77
|
+
socketPath: ((val.dialectOptions) ? ((val.dialectOptions.socketPath) ? val.dialectOptions.socketPath : "") : ""), //Applications/MAMP/tmp/mysql/mysql.sock
|
|
78
|
+
supportBigNumbers: ((val.dialectOptions) ? ((val.dialectOptions.supportBigNumbers) ? val.dialectOptions.supportBigNumbers : false) : false),
|
|
79
|
+
bigNumberStrings: ((val.dialectOptions) ? ((val.dialectOptions.bigNumberStrings) ? val.dialectOptions.bigNumberStrings : false) : false),
|
|
80
|
+
options: ((val.dialectOptions) ? ((val.dialectOptions.options) ? ({ encrypt: false, ...val.dialectOptions.options }) : { encrypt: false }) : { encrypt: false }),
|
|
81
|
+
},
|
|
82
|
+
|
|
83
|
+
// disable inserting undefined values as NULL
|
|
84
|
+
// - default: false
|
|
85
|
+
omitNull: val.omitNull || false,
|
|
86
|
+
|
|
87
|
+
// a flag for using a native library or not.
|
|
88
|
+
// in the case of 'pg' -- set this to true will allow SSL support
|
|
89
|
+
// - default: false
|
|
90
|
+
native: val.native || false,
|
|
91
|
+
|
|
92
|
+
// Specify options, which are used when sequelize.define is called.
|
|
93
|
+
// The following example:
|
|
94
|
+
// define: { timestamps: false }
|
|
95
|
+
// is basically the same as:
|
|
96
|
+
// Model.init(attributes, { timestamps: false });
|
|
97
|
+
// sequelize.define(name, attributes, { timestamps: false });
|
|
98
|
+
// so defining the timestamps for each model will be not necessary
|
|
99
|
+
define: {
|
|
100
|
+
underscored: ((val.define) ? ((val.define.underscored) ? val.define.underscored : false) : false),
|
|
101
|
+
freezeTableName: ((val.define) ? ((val.define.freezeTableName === false) ? val.define.freezeTableName : true) : true),
|
|
102
|
+
charset: ((val.define) ? ((val.define.charset) ? val.define.charset : "utf8") : "utf8"),
|
|
103
|
+
dialectOptions: {
|
|
104
|
+
collate: ((val.define) ? ((val.define.dialectOptions) ? ((val.define.dialectOptions.collate) ? val.define.dialectOptions.collate : "utf8_general_ci") : "utf8_general_ci") : "utf8_general_ci"),
|
|
105
|
+
},
|
|
106
|
+
timestamps: ((val.define) ? ((val.define.timestamps) ? val.define.timestamps : false) : false),
|
|
107
|
+
},
|
|
108
|
+
|
|
109
|
+
// similar for sync: you can define this to always force sync for models
|
|
110
|
+
sync: {
|
|
111
|
+
force: ((val.sync) ? ((val.sync.force) ? val.sync.force : false) : false),
|
|
112
|
+
},
|
|
113
|
+
|
|
114
|
+
// pool configuration used to pool database connections
|
|
115
|
+
pool: {
|
|
116
|
+
max: ((val.pool) ? ((val.pool.max) ? val.pool.max : 5) : 5),
|
|
117
|
+
idle: ((val.pool) ? ((val.pool.idle) ? val.pool.idle : 30000) : 30000),
|
|
118
|
+
acquire: ((val.pool) ? ((val.pool.acquire) ? val.pool.acquire : 60000) : 60000),
|
|
119
|
+
},
|
|
120
|
+
|
|
121
|
+
// isolation level of each transaction
|
|
122
|
+
// defaults to dialect default
|
|
123
|
+
isolationLevel: val.isolationLevel || "Transaction.ISOLATION_LEVELS.REPEATABLE_READ",
|
|
124
|
+
|
|
125
|
+
// JSON response
|
|
126
|
+
query: {
|
|
127
|
+
raw: ((val.query) ? ((val.query.raw) ? val.query.raw : false) : false),
|
|
128
|
+
nest: ((val.query) ? ((val.query.nest) ? val.query.nest : true) : true),
|
|
129
|
+
}
|
|
130
|
+
});
|
|
131
|
+
|
|
132
|
+
// Hook to set `SET NAMES xxx` (ONLY MySQL)
|
|
133
|
+
await sq.addHook('afterConnect', async (connection) => {
|
|
134
|
+
if(val.dialect == "mysql") {
|
|
135
|
+
let charset = ["SET NAMES", ((val.define) ? ((val.define.charset) ? val.define.charset : "utf8") : "utf8")].join(" ");
|
|
136
|
+
connection.query(charset);
|
|
137
|
+
}
|
|
138
|
+
});
|
|
139
|
+
|
|
140
|
+
// show only one text db connnections
|
|
141
|
+
if (headDbShow) {
|
|
142
|
+
console.log('[102m[90m Passed [0m [0mDatabase is connected at:');
|
|
143
|
+
headDbShow = false;
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
// checking shout by dialect sql
|
|
147
|
+
if (val.dialect == "sqlite") {
|
|
148
|
+
// shout for sqlite
|
|
149
|
+
console.log('[92m[/][0m [91m[' + val.dialect + '] [0m[36m' + val.name + ' [0m->[93m ' + sq.options.storage + '[0m');
|
|
150
|
+
} else {
|
|
151
|
+
// shuout for other sql
|
|
152
|
+
console.log('[92m[/][0m [91m[' + val.dialect + '] [0m[36m' + val.name + ' [0m->[93m ' + sq.config.database + ':' + sq.config.port + '[0m');
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
// connection
|
|
156
|
+
await sq.authenticate()
|
|
157
|
+
.then(() => {
|
|
158
|
+
// create database pool
|
|
159
|
+
sql[ val.name ] = sq;
|
|
160
|
+
// checking recursive database connection
|
|
161
|
+
if (database_config.length > 0) {
|
|
162
|
+
connectInProcess(database_config, headDbShow, e => {
|
|
163
|
+
cb(e, true);
|
|
164
|
+
});
|
|
165
|
+
} else {
|
|
166
|
+
// perfectly recursive
|
|
167
|
+
cb(null, true);
|
|
168
|
+
}
|
|
169
|
+
})
|
|
170
|
+
.catch(err => {
|
|
171
|
+
console.log("Unable to connect to the database:", err);
|
|
172
|
+
cb(err, null);
|
|
173
|
+
});
|
|
174
|
+
});
|
|
175
|
+
} else {
|
|
176
|
+
if (database_config.length > 0) {
|
|
177
|
+
connectInProcess(database_config, headDbShow, e => {
|
|
178
|
+
cb(e, true);
|
|
179
|
+
});
|
|
180
|
+
} else {
|
|
181
|
+
// perfectly recursive
|
|
182
|
+
cb(null, true);
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
} catch (error) {
|
|
186
|
+
cb(error, null);
|
|
187
|
+
}
|
|
180
188
|
}
|