UNPKG

koa-quick-service

Version:
484 lines (397 loc) 17.3 kB
/** * 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'];