Authored by 陈峰

SqlHelper

... ... @@ -10,6 +10,7 @@ const bluebird = require('bluebird');
const ynLib = require('yoho-node-lib');
const bodyParser = require('body-parser');
const cookieParser = require('cookie-parser');
const {SqlHelper} = require('./utils');
const session = require('yoho-express-session');
const MemcachedStore = require('connect-memcached')(session);
... ... @@ -23,7 +24,9 @@ ynLib.global(config);
logger = global.yoho.logger;
global.Promise = bluebird;
global.yoho.utils = require('./utils');
global.yoho.utils = {
mysqlCli: new SqlHelper(config.mysql.database)
};
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({
... ...
... ... @@ -6,7 +6,7 @@
const mysqlCli = global.yoho.utils.mysqlCli;
function getAll(req, res) {
mysqlCli.query('select * from vote')
mysqlCli.query('select * from __migrations')
.then(result => {
res.end(JSON.stringify(result));
});
... ...
... ... @@ -9,12 +9,13 @@ const argv = require('optimist').argv
ynLib.global(config);
const logger = global.yoho.logger;
const {mysqlCli} = require('../../utils');
const {SqlHelper} = require('../../utils');
const migrations = require('../../migrations');
const migrationPath = path.join(__dirname, '../../migrations');
const migrationTablName = '__migrations';
const scriptPath = path.join(__dirname, '../../scripts');
const env_script = process.env.npm_config_script || argv.script;
const mysqlCli = new SqlHelper();
let script_file = '';
if (env_script) {
script_file = process.env.npm_config_file || argv.file;
... ... @@ -26,8 +27,8 @@ if (env_script) {
}
const initMargration = () => {
return mysqlCli.execute(`create database if not exists ${mysqlCli.database};`).then(() => {
return mysqlCli.changeDatabase(mysqlCli.database).then(() => {
return mysqlCli.execute(`create database if not exists ${config.mysql.database};`).then(() => {
return mysqlCli.changeDatabase(config.mysql.database).then(() => {
return mysqlCli.execute(`create table if not exists ${migrationTablName} (
id int(10) unsigned not null auto_increment,
migration_name varchar(50) not null,
... ...
... ... @@ -5,8 +5,8 @@
*/
'use strict';
const mysqlCli = require('./mysql');
const SqlHelper = require('./mysql');
module.exports = {
mysqlCli
SqlHelper
};
... ...
const config = global.yoho.config.mysql;
const logger = global.yoho.logger;
const mysql = require('mysql');
const _ = require('lodash');
let sqlHelper = {
database: config.database,
_createPool(database) {
class SqlHelper {
constructor(database) {
this.config = global.yoho.config.mysql;
this.logger = global.yoho.logger;
database = database || 'mysql';
this.pool = mysql.createPool(Object.assign(config.connect, {
this.createPool(database);
}
createPool(database) {
this.pool = mysql.createPool(Object.assign(this.config.connect, {
database
}));
},
}
getConnection() {
return new Promise((resolve, reject) => {
this.pool.getConnection((connErr, connection) => {
if (connErr) {
logger.error(connErr);
this.logger.error(connErr);
reject(connErr);
} else {
resolve(connection);
}
});
});
},
}
baseConenction(sql) {
return new Promise((resolve, reject) => {
this.getConnection().then(connection => {
connection.query(sql, (queryErr, result) => {
connection.release();
if (queryErr) {
logger.error(queryErr);
this.logger.error(queryErr);
reject(queryErr);
} else {
resolve(result);
... ... @@ -37,28 +39,28 @@ let sqlHelper = {
});
});
});
},
}
query(sql) {
return this.baseConenction(sql);
},
}
delete(sql) {
return this.baseConenction(sql).then(result => {
return result.affectedRows;
});
},
}
update(sql) {
return this.baseConenction(sql).then(result => {
return result.changedRows;
});
},
}
insert(sql) {
return this.baseConenction(sql).then(result => {
return result.insertId;
});
},
}
execute(sql) {
return this.baseConenction(sql);
},
}
transaction(sqls) {
return new Promise((resolve, reject) => {
this.getConnection().then(connection => {
... ... @@ -67,7 +69,7 @@ let sqlHelper = {
connection.query(sql, (queryErr, result) => {
if (queryErr) {
connection.rollback();
logger.error(queryErr);
this.logger.error(queryErr);
rej(queryErr);
} else {
res(result);
... ... @@ -93,22 +95,20 @@ let sqlHelper = {
});
});
});
},
}
changeDatabase(database) {
return new Promise(resolve => {
this.pool.end(() => {
this._createPool(database);
this.createPool(database);
resolve();
});
});
},
}
close() {
this.pool.end(() => {
logger.log('end');
this.logger.log('end');
});
}
};
sqlHelper._createPool();
}
module.exports = sqlHelper;
module.exports = SqlHelper;
... ...