beech-api 3.4.12 → 3.5.12
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/README.md +45 -16
- package/package.json +15 -9
- package/packages/cli/beech +2 -2
- package/packages/cli/bin/beech-service.js +305 -0
- package/packages/cli/bin/beech.js +133 -66
- package/packages/cli/core/auth/Credentials.js +34 -1
- package/packages/cli/core/auth/Passport.js +215 -88
- package/packages/cli/core/configure/{app.config.js → app.config-basic.js} +4 -4
- package/packages/cli/core/configure/app.config-sequelize.js +89 -0
- package/packages/cli/core/configure/global.config-basic.js +9 -0
- package/packages/cli/core/configure/global.config-sequelize.js +9 -0
- package/packages/cli/core/configure/passport.config.js +4 -4
- package/packages/cli/core/databases/{mysql.connection.js → mysql.js} +12 -11
- package/packages/cli/core/databases/sequelize.js +149 -0
- package/packages/cli/core/generator/_basic-helpers +23 -0
- package/packages/cli/core/generator/_basic-models +25 -0
- package/packages/cli/core/generator/{endpoints → _endpoints} +5 -5
- package/packages/cli/core/generator/_helpers +10 -0
- package/packages/cli/core/generator/_models +23 -0
- package/packages/cli/core/generator/{package → _package} +2 -2
- package/packages/cli/core/generator/_service +8 -0
- package/packages/cli/core/generator/index.js +91 -24
- package/packages/cli/core/index.js +11 -4
- package/packages/cli/core/services/http.express.js +17 -15
- package/packages/lib/beech.js +90 -26
- package/packages/package.json +20 -0
- package/packages/public/icon/beech_128.png +0 -0
- package/packages/src-/Add-on.js +9 -0
- package/packages/src-/endpoints/hello-endpoints.js +118 -0
- package/packages/src-/endpoints/test2-endpoints.js +75 -0
- package/packages/src-/endpoints/testSequalize-endpoints.js +23 -0
- package/packages/src-/helpers/my/Test.js +11 -0
- package/packages/src-/helpers/my/Test2.js +11 -0
- package/packages/src-/helpers/my/Test3.js +11 -0
- package/packages/src-/helpers/my/Test4.js +11 -0
- package/packages/src-/models/Jubu.js +29 -0
- package/packages/src-/models/Jubu2.js +20 -0
- package/packages/src-/models/Map_master.js +22 -0
- package/packages/{cli/core/generator/models → src-/models/Test.js} +1 -1
- package/packages/src-/models/Test2.js +29 -0
- package/packages/src-/models/User2Sequelize.js +23 -0
- package/packages/src-/models/Users-sqlite.js +21 -0
- package/packages/src-/models/Users.js +53 -0
- package/packages/src-/models/Uuuuuxxx.js +23 -0
- package/packages/src-/models/xxx/Uuuuuxxx.js +23 -0
- package/packages/cli/core/configure/global.config.js +0 -7
- /package/packages/cli/core/configure/{gitignore → _gitignore} +0 -0
- /package/packages/cli/core/configure/{sequelizerc → _sequelizerc} +0 -0
- /package/packages/cli/core/generator/{add-on → _add-on} +0 -0
- /package/packages/cli/core/generator/{create → _create} +0 -0
- /package/packages/cli/core/generator/{help → _help} +0 -0
- /package/packages/cli/core/generator/{spec → _spec} +0 -0
- /package/packages/{cli/core/generator/helpers → src-/helpers/Test2.js} +0 -0
package/README.md
CHANGED
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
|
|
30
30
|
## Environment
|
|
31
31
|
|
|
32
|
-
- [`Node.js`](https://nodejs.org) >=
|
|
32
|
+
- [`Node.js`](https://nodejs.org) >= 14.19.0+ (recommended)
|
|
33
33
|
- `npm` >= 6.4.1+ or `yarn` >= 1.22.4+
|
|
34
34
|
|
|
35
35
|
## Installation
|
|
@@ -106,12 +106,12 @@ $ beech make endpointName
|
|
|
106
106
|
|
|
107
107
|
exports.init = () => {
|
|
108
108
|
|
|
109
|
-
|
|
109
|
+
//@GET
|
|
110
110
|
endpoint.get('/fruits', (req, res) => {
|
|
111
111
|
...
|
|
112
112
|
});
|
|
113
113
|
|
|
114
|
-
|
|
114
|
+
//@POST
|
|
115
115
|
endpoint.post('/fruits', (req, res) => {
|
|
116
116
|
...
|
|
117
117
|
});
|
|
@@ -131,7 +131,7 @@ The `models` keep the files of function(s) for retriving, inserting, updating an
|
|
|
131
131
|
$ beech make modelName --model
|
|
132
132
|
```
|
|
133
133
|
|
|
134
|
-
**Example:** Fruits model.
|
|
134
|
+
**Example (basic):** Fruits model.
|
|
135
135
|
|
|
136
136
|
```js
|
|
137
137
|
// Fruits.js
|
|
@@ -143,24 +143,53 @@ $ beech make modelName --model
|
|
|
143
143
|
return { ... }
|
|
144
144
|
},
|
|
145
145
|
|
|
146
|
-
// Example basic function get data from MySQL
|
|
146
|
+
// Example basic function get data from MySQL table
|
|
147
147
|
getFruits() {
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
});
|
|
155
|
-
} catch (error) {
|
|
156
|
-
reject(error);
|
|
157
|
-
}
|
|
148
|
+
// call example mysql `mysql.default_db` connection name
|
|
149
|
+
mysql.default_db.query("SELECT * FROM fruits", (err, results) => {
|
|
150
|
+
|
|
151
|
+
if (err) { throw err }
|
|
152
|
+
return results;
|
|
153
|
+
|
|
158
154
|
});
|
|
159
155
|
}
|
|
160
156
|
|
|
161
157
|
};
|
|
162
158
|
```
|
|
163
159
|
|
|
160
|
+
**Example (sequelize):** Fruits model.
|
|
161
|
+
|
|
162
|
+
```js
|
|
163
|
+
// Fruits.js
|
|
164
|
+
|
|
165
|
+
// call example define table with `sql.default_db` connection name
|
|
166
|
+
const Fruits = sql.default_db.define("fruits", {
|
|
167
|
+
// asign more DataTypes see more: https://sequelize.org/docs/v6/core-concepts/model-basics/#data-types
|
|
168
|
+
id: {
|
|
169
|
+
type: DataTypes.INTEGER,
|
|
170
|
+
autoIncrement: true,
|
|
171
|
+
primaryKey: true
|
|
172
|
+
},
|
|
173
|
+
fruitsName: DataTypes.STRING,
|
|
174
|
+
fruitsQty: DataTypes.INTEGER,
|
|
175
|
+
fruitsPrice: DataTypes.INTEGER,
|
|
176
|
+
});
|
|
177
|
+
|
|
178
|
+
module.exports = {
|
|
179
|
+
|
|
180
|
+
// Example basic function get one by id
|
|
181
|
+
findFruitsById(id) {
|
|
182
|
+
return Fruits.findOne({ where: { id: id } });
|
|
183
|
+
},
|
|
184
|
+
|
|
185
|
+
// Example basic function get all data from table fruits
|
|
186
|
+
findAll() {
|
|
187
|
+
return Fruits.findAll();
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
};
|
|
191
|
+
```
|
|
192
|
+
|
|
164
193
|
## Helpers
|
|
165
194
|
|
|
166
195
|
The `helpers` keep the files of functions for process specific something in the project. So, you might create the `helpers` in path `src/helpers` folder.
|
|
@@ -216,7 +245,7 @@ module.exports = {
|
|
|
216
245
|
token_expired: 86400,
|
|
217
246
|
|
|
218
247
|
model: {
|
|
219
|
-
//
|
|
248
|
+
// Main sql connection name. You must make sure connection name like inside `app.config.js` file and choose one connection name.
|
|
220
249
|
name: "default_db",
|
|
221
250
|
|
|
222
251
|
// table name of users store, default table `users`
|
package/package.json
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "beech-api",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.5.12",
|
|
4
4
|
"description": "Command line interface for rapid Beech API development",
|
|
5
5
|
"keywords": [
|
|
6
|
+
"api",
|
|
7
|
+
"api-framework",
|
|
6
8
|
"beech-api",
|
|
7
9
|
"cli",
|
|
8
|
-
"
|
|
9
|
-
"nodejs",
|
|
10
|
-
"api-framework"
|
|
10
|
+
"nodejs"
|
|
11
11
|
],
|
|
12
12
|
"license": "MIT",
|
|
13
13
|
"repository": {
|
|
@@ -18,6 +18,7 @@
|
|
|
18
18
|
"authors": "bombkiml",
|
|
19
19
|
"bin": {
|
|
20
20
|
"beech-app": "./packages/cli/bin/beech.js",
|
|
21
|
+
"beech-service": "./packages/cli/bin/beech-service.js",
|
|
21
22
|
"beech": "./packages/cli/core/generator/index.js"
|
|
22
23
|
},
|
|
23
24
|
"bugs": {
|
|
@@ -26,37 +27,42 @@
|
|
|
26
27
|
"homepage": "https://github.com/bombkiml/beech-api/blob/master/README.md",
|
|
27
28
|
"deprecated": false,
|
|
28
29
|
"engines": {
|
|
29
|
-
"node": ">=
|
|
30
|
+
"node": ">=14.19"
|
|
30
31
|
},
|
|
31
32
|
"dependencies": {
|
|
32
33
|
"app-root-path": "^3.0.0",
|
|
33
34
|
"axios": "^0.26.1",
|
|
35
|
+
"cli-clear": "^1.0.4",
|
|
34
36
|
"cookie-parser": "1.4.3",
|
|
35
37
|
"cors": "^2.8.1",
|
|
36
38
|
"express": "4.16.3",
|
|
37
39
|
"express-session": "^1.17.1",
|
|
38
40
|
"express-validator": "2.21.0",
|
|
39
41
|
"fs": "0.0.1-security",
|
|
42
|
+
"inquirer": "8.2.4",
|
|
40
43
|
"jsonwebtoken": "^8.5.1",
|
|
41
44
|
"log-update": "^4.0.0",
|
|
42
45
|
"md5": "^2.3.0",
|
|
43
|
-
"mkdirp": "^
|
|
46
|
+
"mkdirp": "^2.1.6",
|
|
44
47
|
"module-alias": "^2.2.2",
|
|
45
48
|
"mysql": "^2.18.1",
|
|
46
49
|
"mysql2": "^2.3.3",
|
|
47
50
|
"node-cmd": "^3.0.0",
|
|
48
|
-
"
|
|
51
|
+
"node-notifier": "^10.0.1",
|
|
52
|
+
"passport": "^0.6.0",
|
|
49
53
|
"passport-facebook": "^3.0.0",
|
|
50
54
|
"passport-google-oauth": "^2.0.0",
|
|
51
55
|
"passport-jwt": "^4.0.0",
|
|
52
56
|
"passport-local": "^1.0.0",
|
|
53
57
|
"passport-oauth": "^1.0.0",
|
|
54
58
|
"path": "^0.12.7",
|
|
55
|
-
"sequelize": "^
|
|
59
|
+
"sequelize": "^6.21.3",
|
|
56
60
|
"walk": "^2.3.14"
|
|
57
61
|
},
|
|
58
62
|
"devDependencies": {
|
|
59
|
-
"jest": "^
|
|
63
|
+
"jest": "^28.1.3",
|
|
64
|
+
"node-dev": "^8.0.0",
|
|
65
|
+
"nodemon": "^3.0.1",
|
|
60
66
|
"sequelize-cli": "^5.5.1"
|
|
61
67
|
},
|
|
62
68
|
"jest": {
|
package/packages/cli/beech
CHANGED
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
* The beech api (cli) package generator and server (bash for developer and production build)
|
|
5
5
|
*
|
|
6
6
|
* @author bombkiml
|
|
7
|
-
* @version 3.
|
|
8
|
-
* @built
|
|
7
|
+
* @version 3.6
|
|
8
|
+
* @built Aug 14, 2023 at 00:09:19
|
|
9
9
|
*
|
|
10
10
|
*/
|
|
11
11
|
(process.argv[2]) ? require('./core/generator/index') : require('./core/index')
|
|
@@ -0,0 +1,305 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
const logUpdate = require("log-update");
|
|
3
|
+
const notifier = require("node-notifier");
|
|
4
|
+
const path = require("path");
|
|
5
|
+
const clear = require("cli-clear");
|
|
6
|
+
const express = require("express");
|
|
7
|
+
const _app_ = express();
|
|
8
|
+
const Sequelize = require('sequelize');
|
|
9
|
+
let testSql = {};
|
|
10
|
+
|
|
11
|
+
class Beech {
|
|
12
|
+
constructor() {
|
|
13
|
+
this.embed(process.argv)
|
|
14
|
+
.then(() => this.init()
|
|
15
|
+
.then(status => console.log(status))
|
|
16
|
+
.catch(err => {
|
|
17
|
+
throw err;
|
|
18
|
+
})
|
|
19
|
+
);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
init() {
|
|
23
|
+
return new Promise(async (resolve, reject) => {
|
|
24
|
+
try {
|
|
25
|
+
if (this.option == "serve") {
|
|
26
|
+
let turnNoti = true;
|
|
27
|
+
if (this.argument == "--silent" || this.argument == "-S") {
|
|
28
|
+
turnNoti = false;
|
|
29
|
+
}
|
|
30
|
+
// check project config file exists ?
|
|
31
|
+
if (this.fs.existsSync(this.configFile)) {
|
|
32
|
+
const testServ = _app_.listen(this._config_.main_config.app_port, () => {
|
|
33
|
+
//console.log("Test Started.");
|
|
34
|
+
testServ.close();
|
|
35
|
+
// Start real service.
|
|
36
|
+
this.getStart(turnNoti, (err, res) => {
|
|
37
|
+
if (err) {
|
|
38
|
+
reject("\n[101m Faltal [0m start service catch.");
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
// show info
|
|
42
|
+
console.clear();
|
|
43
|
+
//console.log(res);
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
});
|
|
47
|
+
} else {
|
|
48
|
+
resolve("\n[101m Faltal [0m The app.conifg.js file is not found.");
|
|
49
|
+
}
|
|
50
|
+
} else if (!this.option || this.option == "-h" || this.option == "?" || this.option == "--help") {
|
|
51
|
+
// help for see avaliable command
|
|
52
|
+
this.help()
|
|
53
|
+
.then(help => resolve(help))
|
|
54
|
+
.catch(err => reject(err));
|
|
55
|
+
} else {
|
|
56
|
+
resolve("\n[101m Faltal [0m commnad it's not available.");
|
|
57
|
+
}
|
|
58
|
+
} catch (error) {
|
|
59
|
+
reject(error);
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
filterDbIsTrue(dbConfig, cb) {
|
|
65
|
+
try {
|
|
66
|
+
let dbIsTrue = [];
|
|
67
|
+
dbConfig.filter((e, k) => {
|
|
68
|
+
if (e.is_connect) {
|
|
69
|
+
dbIsTrue.push(e);
|
|
70
|
+
}
|
|
71
|
+
if (dbConfig.length == k + 1) {
|
|
72
|
+
cb(null, dbIsTrue);
|
|
73
|
+
}
|
|
74
|
+
});
|
|
75
|
+
} catch (error) {
|
|
76
|
+
cb(error, null);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
initSequelize(val, cb) {
|
|
81
|
+
try {
|
|
82
|
+
const sq = new Sequelize({
|
|
83
|
+
dialect: val.dialect || "mysql",
|
|
84
|
+
host: val.host,
|
|
85
|
+
username: val.username,
|
|
86
|
+
password: val.password,
|
|
87
|
+
database: val.database,
|
|
88
|
+
port: val.port,
|
|
89
|
+
storage: val.storage || ":memory:",
|
|
90
|
+
protocol: val.protocol || null,
|
|
91
|
+
logging: val.logging || false,
|
|
92
|
+
dialectOptions: {
|
|
93
|
+
socketPath: ((val.dialectOptions) ? ((val.dialectOptions.socketPath) ? val.dialectOptions.socketPath : "") : ""), //Applications/MAMP/tmp/mysql/mysql.sock
|
|
94
|
+
supportBigNumbers: ((val.dialectOptions) ? ((val.dialectOptions.supportBigNumbers) ? val.dialectOptions.supportBigNumbers : false) : false),
|
|
95
|
+
bigNumberStrings: ((val.dialectOptions) ? ((val.dialectOptions.bigNumberStrings) ? val.dialectOptions.bigNumberStrings : false) : false),
|
|
96
|
+
options: ((val.dialectOptions) ? ((val.dialectOptions.options) ? ({ encrypt: false, ...val.dialectOptions.options }) : { encrypt: false }) : { encrypt: false }),
|
|
97
|
+
},
|
|
98
|
+
omitNull: val.omitNull || false,
|
|
99
|
+
native: val.native || false,
|
|
100
|
+
define: {
|
|
101
|
+
underscored: ((val.define) ? ((val.define.underscored) ? val.define.underscored : false) : false),
|
|
102
|
+
freezeTableName: ((val.define) ? ((val.define.freezeTableName === false) ? val.define.freezeTableName : true) : true),
|
|
103
|
+
charset: ((val.define) ? ((val.define.charset) ? val.define.charset : "utf8") : "utf8"),
|
|
104
|
+
dialectOptions: {
|
|
105
|
+
collate: ((val.define) ? ((val.define.dialectOptions) ? ((val.define.dialectOptions.timestamps) ? val.define.dialectOptions.timestamps : "utf8_general_ci") : "utf8_general_ci") : "utf8_general_ci"),
|
|
106
|
+
},
|
|
107
|
+
timestamps: ((val.define) ? ((val.define.timestamps) ? val.define.timestamps : false) : false),
|
|
108
|
+
},
|
|
109
|
+
sync: {
|
|
110
|
+
force: ((val.sync) ? ((val.sync.force) ? val.sync.force : false) : false),
|
|
111
|
+
},
|
|
112
|
+
pool: {
|
|
113
|
+
max: ((val.pool) ? ((val.pool.max) ? val.pool.max : 5) : 5),
|
|
114
|
+
idle: ((val.pool) ? ((val.pool.idle) ? val.pool.idle : 30000) : 30000),
|
|
115
|
+
acquire: ((val.pool) ? ((val.pool.acquire) ? val.pool.acquire : 60000) : 60000),
|
|
116
|
+
},
|
|
117
|
+
isolationLevel: val.isolationLevel || "Transaction.ISOLATION_LEVELS.REPEATABLE_READ",
|
|
118
|
+
query: {
|
|
119
|
+
raw: ((val.query) ? ((val.query.raw) ? val.query.raw : true) : true),
|
|
120
|
+
nest: ((val.query) ? ((val.query.nest) ? val.query.nest : true) : true),
|
|
121
|
+
}
|
|
122
|
+
});
|
|
123
|
+
cb(false, sq);
|
|
124
|
+
} catch (error) {
|
|
125
|
+
cb(error, null);
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
testConnectInProcess = (database_config, dbConnTotal, cb) => {
|
|
130
|
+
try {
|
|
131
|
+
let val = database_config.shift();
|
|
132
|
+
if (val) {
|
|
133
|
+
this.initSequelize(val, async (err, sq) => {
|
|
134
|
+
if (err) {
|
|
135
|
+
console.error("[101m Failed [0m Can't to create a Sequelize instance:[36m", val.name, "[0m\n", err);
|
|
136
|
+
cb(err, null, null);
|
|
137
|
+
}
|
|
138
|
+
// Test connection
|
|
139
|
+
await sq.authenticate()
|
|
140
|
+
.then(() => {
|
|
141
|
+
// Database some is true perfectly.
|
|
142
|
+
if (database_config.length == 0) {
|
|
143
|
+
if (sq) {
|
|
144
|
+
testSql[ val.name ] = sq;
|
|
145
|
+
//console.log("DB true, Perfectly.", val.name);
|
|
146
|
+
cb(null, true, testSql);
|
|
147
|
+
}
|
|
148
|
+
} else {
|
|
149
|
+
testSql[ val.name ] = sq;
|
|
150
|
+
this.testConnectInProcess(database_config, dbConnTotal, cb);
|
|
151
|
+
}
|
|
152
|
+
})
|
|
153
|
+
.catch(err => {
|
|
154
|
+
console.error("[101m Failed [0m Unable to connect to the database:[36m", val.name, "[0m\n", err);
|
|
155
|
+
cb(err, null, null);
|
|
156
|
+
});
|
|
157
|
+
});
|
|
158
|
+
} else if (!dbConnTotal) {
|
|
159
|
+
// All Database is falsly perfectly.
|
|
160
|
+
//console.log("DB all false, Perfectly.");
|
|
161
|
+
cb(null, true, testSql);
|
|
162
|
+
}
|
|
163
|
+
} catch (error) {
|
|
164
|
+
cb(error, null, null);
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
getStart(turnNoti, cb) {
|
|
169
|
+
try {
|
|
170
|
+
clear();
|
|
171
|
+
logUpdate("[36mCompiling...[0m");
|
|
172
|
+
// filter for check dabatase only true
|
|
173
|
+
this.filterDbIsTrue(this._config_.database_config, (err, dbConnectIsTrueOnly) => {
|
|
174
|
+
if (err) {
|
|
175
|
+
logUpdate("Config file crash.", err);
|
|
176
|
+
return;
|
|
177
|
+
}
|
|
178
|
+
// leave data to disconnect database
|
|
179
|
+
let leaveDataForDisconnect = dbConnectIsTrueOnly.slice(0);
|
|
180
|
+
// check db connect truthy length ?
|
|
181
|
+
if (dbConnectIsTrueOnly.length > 0) {
|
|
182
|
+
// Test connect process
|
|
183
|
+
this.testConnectInProcess(dbConnectIsTrueOnly, dbConnectIsTrueOnly.length, (err, result, dbs) => {
|
|
184
|
+
if (err) {
|
|
185
|
+
logUpdate("[101m Failed [0m Database connect failed.", err);
|
|
186
|
+
return;
|
|
187
|
+
}
|
|
188
|
+
if (result) {
|
|
189
|
+
// Disconnect database
|
|
190
|
+
this.disConnectTestDB(leaveDataForDisconnect, dbs, (err, disResult) => {
|
|
191
|
+
if (err) {
|
|
192
|
+
logUpdate("[101m Failed [0m Testing Database connect failed.", err);
|
|
193
|
+
return;
|
|
194
|
+
}
|
|
195
|
+
if (disResult) {
|
|
196
|
+
// Start service
|
|
197
|
+
this.serviceDevStart();
|
|
198
|
+
// check turn on nofi
|
|
199
|
+
if (turnNoti) {
|
|
200
|
+
this.notiCompile();
|
|
201
|
+
}
|
|
202
|
+
} else {
|
|
203
|
+
cb(err, null);
|
|
204
|
+
}
|
|
205
|
+
});
|
|
206
|
+
}
|
|
207
|
+
});
|
|
208
|
+
} else {
|
|
209
|
+
this.serviceDevStart();
|
|
210
|
+
}
|
|
211
|
+
});
|
|
212
|
+
} catch (error) {
|
|
213
|
+
cb(error, null);
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
serviceDevStart() {
|
|
218
|
+
let firstCount = 0;
|
|
219
|
+
const command = this.cmd.get(`npx nodemon -q ./node_modules/beech-api/packages/cli/beech`);
|
|
220
|
+
command.stdout.on('data', (data) => {
|
|
221
|
+
firstCount++;
|
|
222
|
+
let leaveData = data.slice(0);
|
|
223
|
+
if (firstCount == 1) {
|
|
224
|
+
clear();
|
|
225
|
+
}
|
|
226
|
+
// shout out
|
|
227
|
+
if (data.trim().slice(-1) == ":") {
|
|
228
|
+
console.log("\n", leaveData.trim());
|
|
229
|
+
} else {
|
|
230
|
+
let serviceShoutOut = leaveData.trim().split('- ');
|
|
231
|
+
if (serviceShoutOut.length > 2) {
|
|
232
|
+
console.log(" -", serviceShoutOut[ 1 ].trim());
|
|
233
|
+
console.log(" -", serviceShoutOut[ 2 ].trim());
|
|
234
|
+
} else {
|
|
235
|
+
console.log(" ", leaveData.trim());
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
});
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
notiCompile() {
|
|
243
|
+
notifier.notify({
|
|
244
|
+
title: 'Beech API',
|
|
245
|
+
subtitle: 'Beech service getting started.',
|
|
246
|
+
message: "Service getting started.",
|
|
247
|
+
sound: 'Funk',
|
|
248
|
+
wait: false,
|
|
249
|
+
icon: path.join(__dirname, "/../../public/icon/beech_128.png"),
|
|
250
|
+
contentImage: path.join(__dirname, "../../public/icon/beech_128.png"),
|
|
251
|
+
});
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
disConnectTestDB(dbConfigTruthy, dbs, cb) {
|
|
255
|
+
try {
|
|
256
|
+
dbConfigTruthy.map((e, k) => {
|
|
257
|
+
// Closing database
|
|
258
|
+
if (dbs[ e.name ].close()) {
|
|
259
|
+
if (dbConfigTruthy.length == k + 1) {
|
|
260
|
+
cb(null, dbConfigTruthy);
|
|
261
|
+
}
|
|
262
|
+
} else {
|
|
263
|
+
cb(`Close database failed, ${e.name}`, null);
|
|
264
|
+
}
|
|
265
|
+
});
|
|
266
|
+
} catch (error) {
|
|
267
|
+
cb(error, null);
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
help() {
|
|
272
|
+
return new Promise((resolve, reject) => {
|
|
273
|
+
try {
|
|
274
|
+
this.fs.readFile(__dirname + "/../core/generator/_service", "utf8", (err, data) => {
|
|
275
|
+
if (err) {
|
|
276
|
+
reject(err);
|
|
277
|
+
} else {
|
|
278
|
+
resolve(data);
|
|
279
|
+
}
|
|
280
|
+
});
|
|
281
|
+
} catch (error) {
|
|
282
|
+
reject(error);
|
|
283
|
+
}
|
|
284
|
+
});
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
embed(argv) {
|
|
288
|
+
return new Promise((resolve, reject) => {
|
|
289
|
+
try {
|
|
290
|
+
this.fs = require("fs");
|
|
291
|
+
this.cmd = require('node-cmd');
|
|
292
|
+
this.argv = argv;
|
|
293
|
+
this.option = argv[ 2 ];
|
|
294
|
+
this.argument = argv[ 3 ];
|
|
295
|
+
this.configFile = path.resolve("./app.config.js");
|
|
296
|
+
this._config_ = require(this.configFile);
|
|
297
|
+
resolve(this);
|
|
298
|
+
} catch (error) {
|
|
299
|
+
reject(error);
|
|
300
|
+
}
|
|
301
|
+
});
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
new Beech();
|