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}`); } } } };