koa-quick-service
Version:
start koa service quickly
484 lines (397 loc) • 17.3 kB
JavaScript
/**
* Created by evio on 16/8/31.
*/
'use strict';
/**
* Created by evio on 16/6/24.
*/
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _typeof2 = require('babel-runtime/helpers/typeof');
var _typeof3 = _interopRequireDefault(_typeof2);
var _regenerator = require('babel-runtime/regenerator');
var _regenerator2 = _interopRequireDefault(_regenerator);
var _promise = require('babel-runtime/core-js/promise');
var _promise2 = _interopRequireDefault(_promise);
var _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator');
var _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);
var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');
var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);
var _createClass2 = require('babel-runtime/helpers/createClass');
var _createClass3 = _interopRequireDefault(_createClass2);
var _mysql = require('mysql');
var _mysql2 = _interopRequireDefault(_mysql);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var MySQL = function () {
function MySQL(options) {
(0, _classCallCheck3.default)(this, MySQL);
this.options = options;
}
/**
* 数据库链接方法
* @returns {Promise}
*/
(0, _createClass3.default)(MySQL, [{
key: 'connect',
value: function () {
var _ref = (0, _asyncToGenerator3.default)(_regenerator2.default.mark(function _callee() {
var _this = this;
return _regenerator2.default.wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
_context.next = 2;
return new _promise2.default(function (resolve, reject) {
var connection = _mysql2.default.createConnection(_this.options /*{
"host": config.mysql.host,
"user": config.mysql.user,
"password": config.mysql.password,
"database": config.mysql.database
}*/);
connection.connect(function (err) {
if (err) return reject(err);
resolve(connection);
});
});
case 2:
this.connector = _context.sent;
return _context.abrupt('return', this);
case 4:
case 'end':
return _context.stop();
}
}
}, _callee, this);
}));
function connect() {
return _ref.apply(this, arguments);
}
return connect;
}()
/**
* 操作数据库方法
* @param args
* @returns {*}
*/
}, {
key: 'query',
value: function () {
var _ref2 = (0, _asyncToGenerator3.default)(_regenerator2.default.mark(function _callee2(sql, args) {
var _this2 = this;
return _regenerator2.default.wrap(function _callee2$(_context2) {
while (1) {
switch (_context2.prev = _context2.next) {
case 0:
_context2.next = 2;
return new _promise2.default(function (resolve, reject) {
if ((0, _typeof3.default)(_this2.connector) == 'object') {
_this2.connector.query(sql, args || [], function (err, rows) {
if (err) return reject(err);
resolve(rows);
});
} else {
reject(new Error('数据库链接失败'));
}
});
case 2:
return _context2.abrupt('return', _context2.sent);
case 3:
case 'end':
return _context2.stop();
}
}
}, _callee2, this);
}));
function query(_x, _x2) {
return _ref2.apply(this, arguments);
}
return query;
}()
/**
* 数据库插入新数据方法,简化代码操作
* @param table
* @param value
* @returns {*}
*/
}, {
key: 'insert',
value: function () {
var _ref3 = (0, _asyncToGenerator3.default)(_regenerator2.default.mark(function _callee3(table, value) {
var fields, values, dots, key, sql;
return _regenerator2.default.wrap(function _callee3$(_context3) {
while (1) {
switch (_context3.prev = _context3.next) {
case 0:
fields = [], values = [], dots = [];
for (key in value) {
fields.push(key);
dots.push('?');
values.push(value[key]);
}
sql = 'INSERT INTO ' + table + ' (' + fields.join(',') + ') VALUES (' + dots.join(',') + ')';
_context3.next = 5;
return this.query(sql, values);
case 5:
return _context3.abrupt('return', _context3.sent);
case 6:
case 'end':
return _context3.stop();
}
}
}, _callee3, this);
}));
function insert(_x3, _x4) {
return _ref3.apply(this, arguments);
}
return insert;
}()
/**
* 数据库更新数据方法,简化代码操作
* @param table {string}
* @param value {json}
* @param where {string}
* @param wheres {array}
* @returns {*}
*/
}, {
key: 'update',
value: function () {
var _ref4 = (0, _asyncToGenerator3.default)(_regenerator2.default.mark(function _callee4(table, value, where, wheres) {
var fields, values, key, sql;
return _regenerator2.default.wrap(function _callee4$(_context4) {
while (1) {
switch (_context4.prev = _context4.next) {
case 0:
fields = [], values = [];
for (key in value) {
fields.push(key + '=?');
values.push(value[key]);
}
sql = 'UPDATE ' + table + ' SET ' + fields.join(',');
if (where) {
sql += ' WHERE ' + where;
wheres = wheres ? wheres : [];
values = values.concat(wheres);
}
_context4.next = 6;
return this.query(sql, values);
case 6:
return _context4.abrupt('return', _context4.sent);
case 7:
case 'end':
return _context4.stop();
}
}
}, _callee4, this);
}));
function update(_x5, _x6, _x7, _x8) {
return _ref4.apply(this, arguments);
}
return update;
}()
/**
* 数据库删除数据方法,简化代码操作
* @param table
* @param where
* @param wheres
* @returns {*}
*/
}, {
key: 'delete',
value: function () {
var _ref5 = (0, _asyncToGenerator3.default)(_regenerator2.default.mark(function _callee5(table, where, wheres) {
var sql, values;
return _regenerator2.default.wrap(function _callee5$(_context5) {
while (1) {
switch (_context5.prev = _context5.next) {
case 0:
sql = 'DELETE FROM ' + table, values = [];
if (where) {
sql += ' WHERE ' + where;
wheres = wheres ? wheres : [];
values = values.concat(wheres);
}
_context5.next = 4;
return this.query(sql, values);
case 4:
return _context5.abrupt('return', _context5.sent);
case 5:
case 'end':
return _context5.stop();
}
}
}, _callee5, this);
}));
function _delete(_x9, _x10, _x11) {
return _ref5.apply(this, arguments);
}
return _delete;
}()
/**
* 关闭数据库连接方法
* @param args
* @returns {*|number}
*/
}, {
key: 'end',
value: function () {
var _ref6 = (0, _asyncToGenerator3.default)(_regenerator2.default.mark(function _callee6() {
var _this3 = this;
var result;
return _regenerator2.default.wrap(function _callee6$(_context6) {
while (1) {
switch (_context6.prev = _context6.next) {
case 0:
_context6.next = 2;
return new _promise2.default(function (resolve) {
if ((0, _typeof3.default)(_this3.connector) == 'object') {
_this3.connector.end(function () {
_this3.connector = null;
resolve();
});
} else {
resolve();
}
});
case 2:
result = _context6.sent;
return _context6.abrupt('return', result);
case 4:
case 'end':
return _context6.stop();
}
}
}, _callee6, this);
}));
function end() {
return _ref6.apply(this, arguments);
}
return end;
}()
/**
* 开始事务处理方法
* @param args
* @returns {*}
*/
}, {
key: 'begin',
value: function () {
var _ref7 = (0, _asyncToGenerator3.default)(_regenerator2.default.mark(function _callee7() {
var _this4 = this;
var result;
return _regenerator2.default.wrap(function _callee7$(_context7) {
while (1) {
switch (_context7.prev = _context7.next) {
case 0:
_context7.next = 2;
return new _promise2.default(function (resolve, reject) {
if ((0, _typeof3.default)(_this4.connector) == 'object') {
return _this4.connector.beginTransaction(resolve);
} else {
reject(new Error('数据库链接失败'));
}
});
case 2:
result = _context7.sent;
return _context7.abrupt('return', result);
case 4:
case 'end':
return _context7.stop();
}
}
}, _callee7, this);
}));
function begin() {
return _ref7.apply(this, arguments);
}
return begin;
}()
/**
* 提交事务处理方法
* @param args
* @returns {*}
*/
}, {
key: 'commit',
value: function () {
var _ref8 = (0, _asyncToGenerator3.default)(_regenerator2.default.mark(function _callee8() {
var _this5 = this;
var result;
return _regenerator2.default.wrap(function _callee8$(_context8) {
while (1) {
switch (_context8.prev = _context8.next) {
case 0:
_context8.next = 2;
return new _promise2.default(function (resolve, reject) {
if ((0, _typeof3.default)(_this5.connector) == 'object') {
return _this5.connector.commit(resolve);
} else {
reject(new Error('数据库链接失败'));
}
});
case 2:
result = _context8.sent;
return _context8.abrupt('return', result);
case 4:
case 'end':
return _context8.stop();
}
}
}, _callee8, this);
}));
function commit() {
return _ref8.apply(this, arguments);
}
return commit;
}()
/**
* 回滚事务处理方法
* @param args
* @returns {*}
*/
}, {
key: 'rollback',
value: function () {
var _ref9 = (0, _asyncToGenerator3.default)(_regenerator2.default.mark(function _callee9() {
var _this6 = this;
var result;
return _regenerator2.default.wrap(function _callee9$(_context9) {
while (1) {
switch (_context9.prev = _context9.next) {
case 0:
_context9.next = 2;
return new _promise2.default(function (resolve, reject) {
if ((0, _typeof3.default)(_this6.connector) == 'object') {
return _this6.connector.rollback(resolve);
} else {
reject(new Error('数据库链接失败'));
}
});
case 2:
result = _context9.sent;
return _context9.abrupt('return', result);
case 4:
case 'end':
return _context9.stop();
}
}
}, _callee9, this);
}));
function rollback() {
return _ref9.apply(this, arguments);
}
return rollback;
}()
}], [{
key: 'create',
value: function create(options) {
var mysql = new MySQL(options);
return mysql.connect();
}
}]);
return MySQL;
}();
exports.default = MySQL;
module.exports = exports['default'];