64 lines
1.8 KiB
JavaScript
64 lines
1.8 KiB
JavaScript
|
const {Sequelize} = require('sequelize');
|
||
|
const {QueryTypes} = require('sequelize');
|
||
|
|
||
|
let sequelize = {};
|
||
|
let sequelize_default = null;
|
||
|
|
||
|
module.exports = {
|
||
|
name: 'db',
|
||
|
dependencies: ["conf"],
|
||
|
actions: {
|
||
|
exec: {
|
||
|
cache: false,
|
||
|
params: {
|
||
|
"db": {
|
||
|
"type": "string",
|
||
|
"optional": true,
|
||
|
"convert": true
|
||
|
},
|
||
|
"sql": {
|
||
|
"type": "string",
|
||
|
"optional": false,
|
||
|
"convert": true
|
||
|
},
|
||
|
"params": {
|
||
|
"type": "object",
|
||
|
"optional": true,
|
||
|
"convert": true
|
||
|
}
|
||
|
},
|
||
|
handler(ctx) {
|
||
|
let db = ctx.params.db;
|
||
|
let sql = ctx.params.sql;
|
||
|
let params = ctx.params.params;
|
||
|
|
||
|
let seq = sequelize[db];
|
||
|
if (seq === undefined) {
|
||
|
seq = sequelize_default;
|
||
|
}
|
||
|
return seq.query(sql, {
|
||
|
replacements: params,
|
||
|
type: QueryTypes.SELECT
|
||
|
});
|
||
|
}
|
||
|
}
|
||
|
},
|
||
|
async started() {
|
||
|
let dbs = await this.broker.call("conf.get", {key: "dbs"});
|
||
|
for (let e in dbs) {
|
||
|
try {
|
||
|
let db = dbs[e];
|
||
|
if (db.uri) {
|
||
|
sequelize[e] = new Sequelize(db.uri);
|
||
|
if (db.default) {
|
||
|
sequelize_default = sequelize[e];
|
||
|
}
|
||
|
this.logger.info(`create db succeed, key = ${e}, db = ${db.uri}`);
|
||
|
}
|
||
|
} catch (err) {
|
||
|
this.logger.error(`create db failed, key = ${e}, db = ${db.uri}, error = ${err}`);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
};
|