micro_service/services/db.service.js

64 lines
1.8 KiB
JavaScript
Executable File

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