gcl
Version:
码农村nodejs类库,完成解决回调陷阱,配置框架,IOC框架,统一多DB访问框架,可扩展日志框架和io/db/net/thread/pool 克隆表达式,加解密算法等等一系列基础类库和算法的实现
1,586 lines (1,305 loc) • 320 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.NiElasticSearchDataFactory = exports.NiMailDataFactory = exports.NiSoapDataFactory = exports.NiUrlDataFactory = exports.NiRedisSqlDataFactory = exports.NiRedisSqlDataFactory2 = exports.NiMongoSQLDataFactory = exports.NiMemSQLDataFactory = exports.NiObjectDataFactory = exports.NiMsSQLDataFactory = exports.NiMySQLDataFactory = exports.NiMultiTemplateDecorator = exports.NiTemplateCacheDecorator = exports.NiTemplateDecorator = exports.NiDataCommand = exports.NiDataConnection = exports.NiDataFactory = exports.NiPoolDataResource = exports.NiStaticDataResource = exports.NiInstanceDataResource = exports.NiDataResource = exports.NiDataResult = exports.NiTemplateManager = exports.NiTemplate = exports.NiDataConfigConvert = exports.NiDataConfig = undefined;
var _values6 = require("babel-runtime/core-js/object/values");
var _values7 = _interopRequireDefault(_values6);
var _toConsumableArray2 = require("babel-runtime/helpers/toConsumableArray");
var _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);
var _slicedToArray2 = require("babel-runtime/helpers/slicedToArray");
var _slicedToArray3 = _interopRequireDefault(_slicedToArray2);
var _regenerator = require("babel-runtime/regenerator");
var _regenerator2 = _interopRequireDefault(_regenerator);
var _asyncToGenerator2 = require("babel-runtime/helpers/asyncToGenerator");
var _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);
var _typeof2 = require("babel-runtime/helpers/typeof");
var _typeof3 = _interopRequireDefault(_typeof2);
var _getPrototypeOf = require("babel-runtime/core-js/object/get-prototype-of");
var _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);
var _classCallCheck2 = require("babel-runtime/helpers/classCallCheck");
var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);
var _createClass2 = require("babel-runtime/helpers/createClass");
var _createClass3 = _interopRequireDefault(_createClass2);
var _possibleConstructorReturn2 = require("babel-runtime/helpers/possibleConstructorReturn");
var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);
var _get2 = require("babel-runtime/helpers/get");
var _get3 = _interopRequireDefault(_get2);
var _inherits2 = require("babel-runtime/helpers/inherits");
var _inherits3 = _interopRequireDefault(_inherits2);
var _tool = require("../common/tool");
var _tool2 = _interopRequireDefault(_tool);
var _config = require("../io/config");
var _config2 = _interopRequireDefault(_config);
var _pool = require("../collection/pool");
var _mysql = require("mysql");
var _mysql2 = _interopRequireDefault(_mysql);
var _mssql = require("mssql");
var _mssql2 = _interopRequireDefault(_mssql);
var _memcached = require("memcached");
var _memcached2 = _interopRequireDefault(_memcached);
var _mongodb = require("mongodb");
var _mongodb2 = _interopRequireDefault(_mongodb);
var _tool3 = require("../net/tool");
var _tool4 = _interopRequireDefault(_tool3);
var _querystring = require("querystring");
var _querystring2 = _interopRequireDefault(_querystring);
var _emailjs = require("emailjs");
var _emailjs2 = _interopRequireDefault(_emailjs);
var _elasticsearch = require("@elastic/elasticsearch");
var _elasticsearch2 = _interopRequireDefault(_elasticsearch);
var _ioredis = require("ioredis");
var _ioredis2 = _interopRequireDefault(_ioredis);
var _soap = require("soap");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var pri = _tool2.default.pris();
//import nosql from './nosql';
/**
* //依托Middler框架完成对数据类型文件的处理,包括mysql mongodb sqlserver memcache ObjectDB(即自定义function) WebSocket等等数据源类型的操作
//实现对如下格式文件的处理
Ni:{
ajaxtest2:{command:'http://localhost/VESHTest/Module/help/test.tjsonp?_n=recorder',dbtype:'tjson',params:{limit:11},template:'template1'},
ajaxtest1:{command:'http://localhost/KDAPI/Module/GetOrderTrackItems.tjsonp?_n=Order',dbtype:'tjson',params:{},template:'template1'},
'ajaxtest1.Cache':{command:function(res,params){return res[params.cacheKey];不写即使用默认值},dbtype:'json',params:{},template:'template2'},
'ajaxtest1.Set':{command:function(res,params){res[params.cacheKey] = params.cacheValue;不写即使用默认值},dbtype:'json',params:{timeout1:{interval:'s',number:50}},template:'template2'},
sqlinsert:{command:'create table if not exists table(name Text,message text,time integer);insert into table values(?,?,?);',dbtype:'json',params:{data:[]},template:'sqltemp'},
sqlselect:{command:'select * from table;',dbtype:'json',params:{data:[]},template:'sqltemp'},
sqlselect2:{command:'select * from table where name=?',dbtype:'json',params:{data:[]},template:'sqltemp'},
Name1:{command:'',params:{},dbtype:'json/tjson',template:'仅在Middler中调用NiMultiTemplateDecorator时启用'},
wstest1: { command: 'abc.json', dbtype: 'json', params: {}, template: 'ws' },
wstest2: { command: 'bcd.json?_n=MT, dbtype: 'json', params: {}, template: 'ws' }
}
let t = middler.getObjectByAppName('Ni','templatename');
let res = t.execute('aaa.GetProductDetail',{ProductID:111},function(result){
let res = result.last();
});
middler.setObjectByAppName('Ni','templatename',t);
//分离NiDataConfig完成Ni格式文件处理
//分离NiDataConfigConvert完成对Ni格式转成Config
//用于处理 Ni文件定义
*/
var NiDataConfig = exports.NiDataConfig = function (_C$Config) {
(0, _inherits3.default)(NiDataConfig, _C$Config);
function NiDataConfig() {
(0, _classCallCheck3.default)(this, NiDataConfig);
var _this2 = (0, _possibleConstructorReturn3.default)(this, (NiDataConfig.__proto__ || (0, _getPrototypeOf2.default)(NiDataConfig)).call(this));
var that = _this2;
var _pri = pri(that, {
mergeValue: function mergeValue(param) {
switch (param.type) {
case "Int":
case "int":
case "int32":
case "int16":
case "int64":
param.value = param.value ? parseInt(param.value) : 0;
break;
case "DateTime":
case "Date":
case "datetime":
param.value = param.value ? param.value.split ? Date.parse(param.value) : new Date(param.value) : new Date(0);
break;
case "float":
case "single":
case "double":
param.value = param.value ? parseFloat(param.value) : 0;
break;
case "string":
case "String":
param.value = param.value == null ? null : param.value + "";
break;
}
}
}),
_ = _pri._,
__ = _pri.__;
return _this2;
}
(0, _createClass3.default)(NiDataConfig, [{
key: "standard",
value: function standard(val) {
var ret = {};
var _loop = function _loop(k) {
var v = val[k] || {
value: val[k],
isStandard: true
};
ret[k] = v.isStandard ? v : v.type || v.out && v.out != "" ? function () {
v.isStandard = true;
return v;
}() : {
value: v,
isStandard: true
};
};
for (var k in val) {
_loop(k);
}
return ret;
}
}, {
key: "merge",
value: function merge() {
for (var _len = arguments.length, vals = Array(_len), _key = 0; _key < _len; _key++) {
vals[_key] = arguments[_key];
}
var _pri2 = pri(this),
_ = _pri2._,
__ = _pri2.__;
//默认设置最后一个参数为值,其它参数为标准化数据 key:{value:val,type:'',out:false,isStandard:true}
vals.forEach(function (v, i) {
return vals[i] = _.standard(v);
});
vals = _tool2.default.merge.apply(null, vals);
for (var k in vals) {
__.mergeValue(vals[k]);
}return vals;
}
}, {
key: "getValue",
value: function getValue() {
var _pri3 = pri(this),
_ = _pri3._,
__ = _pri3.__;
for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
args[_key2] = arguments[_key2];
}
var ret = (0, _get3.default)(NiDataConfig.prototype.__proto__ || (0, _getPrototypeOf2.default)(NiDataConfig.prototype), "getValue", this).apply(_, args); //这里借用VJ的方法将ni.js中定义的V.merge方法改为参数标准化方法
if (ret) {
ret.merge = ret.merge || function () {
for (var _len3 = arguments.length, args2 = Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
args2[_key3] = arguments[_key3];
}
return _.merge.apply(_, args2);
};
}
return ret;
}
}]);
return NiDataConfig;
}(_config2.default.Config);
NiDataConfig.instance = new NiDataConfig();
var NiDataConfigConvert = exports.NiDataConfigConvert = function (_C$ConfigConvert) {
(0, _inherits3.default)(NiDataConfigConvert, _C$ConfigConvert);
function NiDataConfigConvert() {
(0, _classCallCheck3.default)(this, NiDataConfigConvert);
var _this3 = (0, _possibleConstructorReturn3.default)(this, (NiDataConfigConvert.__proto__ || (0, _getPrototypeOf2.default)(NiDataConfigConvert)).call(this));
pri(_this3);
return _this3;
}
(0, _createClass3.default)(NiDataConfigConvert, [{
key: "toConfig",
value: function toConfig(val) {
var ret = new NiDataConfig();
if (val) {
if ((typeof val === "undefined" ? "undefined" : (0, _typeof3.default)(val)) == "object") {
for (var k in val) {
var _v2 = val[k];
if (_v2) ret.data[k.toLowerCase()] = _tool2.default.merge({
params: {}
}, _v2);
}
}
}
return ret;
}
}]);
return NiDataConfigConvert;
}(_config2.default.ConfigConvert);
var NiTemplate = exports.NiTemplate = function () {
function NiTemplate(res, cm) {
var _this4 = this;
(0, _classCallCheck3.default)(this, NiTemplate);
var that = this;
this.transaction = false;
var _pri4 = pri(that, {
lstCmd: [],
KEY: "Ni",
result: new NiDataResult(),
res: res,
cm: cm,
addCommand: function addCommand(name, params) {
var _pri5 = pri(that),
_ = _pri5._,
__ = _pri5.__;
var cmd = __.cm.getConfigValue(__.KEY, name.toLowerCase().trim());
var command = name;
var template = "";
if (cmd) {
command = cmd.command || name;
params = cmd.merge(cmd.params, _tool2.default.getValue(params, {}));
template = cmd.template;
} else params = NiDataConfig.instance.merge({}, params);
__.lstCmd.push({
name: command,
params: params,
oriparams: cmd ? cmd.params : params, //备份
template: template,
key: name,
jsonp: cmd && cmd.jsonp ? cmd.jsonp : false,
dbtype: cmd && cmd.dbtype ? cmd.dbtype : "tjson"
});
},
execute: function () {
var _ref = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee2() {
var _pri6, _, __, _cms, conn, cmd;
return _regenerator2.default.wrap(function _callee2$(_context2) {
while (1) {
switch (_context2.prev = _context2.next) {
case 0:
_pri6 = pri(that), _ = _pri6._, __ = _pri6.__;
_cms = __.lstCmd;
__.lstCmd = [];
if (!(_cms.length > 0)) {
_context2.next = 28;
break;
}
_context2.next = 6;
return __.res.getDBConnection();
case 6:
conn = _context2.sent;
_context2.prev = 7;
if (_cms.length > 1) conn.transaction = true;
cmd = __.res.getDBCommand();
cmd.connection = conn;
//执行过程存在严重漏洞 考虑 直接执行与非直接执行的异同
_context2.next = 13;
return _tool2.default.each(_cms, function () {
var _ref2 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee(v) {
var data;
return _regenerator2.default.wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
cmd.command = v.name;
cmd.params = v.params;
cmd.oriparams = v.oriparams;
cmd.dbtype = v.dbtype;
cmd.jsonp = v.jsonp;
//需要知晓connection的执行原理
if (!conn.transaction) {
_context.next = 9;
break;
}
cmd.execute();
_context.next = 13;
break;
case 9:
_context.next = 11;
return cmd.execute();
case 11:
data = _context.sent;
__.result.add(!data || _tool2.default.isArray(data) && data.length == 0 ? false : data, v.key);
case 13:
return _context.abrupt("return", false);
case 14:
case "end":
return _context.stop();
}
}
}, _callee, _this4);
}));
return function (_x) {
return _ref2.apply(this, arguments);
};
}(), true);
case 13:
if (!(conn.transaction && conn.commit)) {
_context2.next = 16;
break;
}
_context2.next = 16;
return conn.commit();
case 16:
return _context2.abrupt("return", true);
case 19:
_context2.prev = 19;
_context2.t0 = _context2["catch"](7);
_tool2.default.showException("commit ", _context2.t0);
throw _context2.t0;
case 23:
_context2.prev = 23;
__.res.backDBConnection(conn);
return _context2.finish(23);
case 26:
_context2.next = 29;
break;
case 28:
_tool2.default.showException("不能调用空的命令对象!");
case 29:
case "end":
return _context2.stop();
}
}
}, _callee2, _this4, [[7, 19, 23, 26]]);
}));
return function execute() {
return _ref.apply(this, arguments);
};
}(),
excute: function () {
var _ref3 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee3() {
return _regenerator2.default.wrap(function _callee3$(_context3) {
while (1) {
switch (_context3.prev = _context3.next) {
case 0:
_context3.next = 2;
return __.execute();
case 2:
return _context3.abrupt("return", _context3.sent);
case 3:
case "end":
return _context3.stop();
}
}
}, _callee3, _this4);
}));
return function excute() {
return _ref3.apply(this, arguments);
};
}()
}),
_ = _pri4._,
__ = _pri4.__;
}
(0, _createClass3.default)(NiTemplate, [{
key: "execute",
value: function () {
var _ref4 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee4(name) {
var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
var _pri7, _, __;
return _regenerator2.default.wrap(function _callee4$(_context4) {
while (1) {
switch (_context4.prev = _context4.next) {
case 0:
_pri7 = pri(this), _ = _pri7._, __ = _pri7.__;
//__.addCommand(name, V.json(V.toJsonString(params)));
//__.addCommand(name, V.merge({},params));
__.addCommand(name, params);
if (_.transaction) {
_context4.next = 6;
break;
}
__.result.clear();
_context4.next = 6;
return __.execute();
case 6:
return _context4.abrupt("return", __.result);
case 7:
case "end":
return _context4.stop();
}
}
}, _callee4, this);
}));
function execute(_x2) {
return _ref4.apply(this, arguments);
}
return execute;
}()
}, {
key: "excute",
value: function () {
var _ref5 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee5() {
var _args5 = arguments;
return _regenerator2.default.wrap(function _callee5$(_context5) {
while (1) {
switch (_context5.prev = _context5.next) {
case 0:
_context5.next = 2;
return this.execute.apply(this, _args5);
case 2:
return _context5.abrupt("return", _context5.sent);
case 3:
case "end":
return _context5.stop();
}
}
}, _callee5, this);
}));
function excute() {
return _ref5.apply(this, arguments);
}
return excute;
}()
}, {
key: "commit",
value: function () {
var _ref6 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee6() {
var _pri8, _, __;
return _regenerator2.default.wrap(function _callee6$(_context6) {
while (1) {
switch (_context6.prev = _context6.next) {
case 0:
_pri8 = pri(this), _ = _pri8._, __ = _pri8.__;
__.result.clear();
_context6.next = 4;
return __.execute();
case 4:
return _context6.abrupt("return", __.result);
case 5:
case "end":
return _context6.stop();
}
}
}, _callee6, this);
}));
function commit() {
return _ref6.apply(this, arguments);
}
return commit;
}()
}, {
key: "dispose",
value: function dispose() {
var _pri9 = pri(),
_ = _pri9._,
__ = _pri9.__;
for (var i in __) {
//if (__[i].dispose) try { __[i].dispose() } catch (e) {}
delete __[i];
}
}
}, {
key: "getCommand",
value: function getCommand() {
var name = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : "";
var _pri10 = pri(this),
__ = _pri10.__;
return _tool2.default.merge({}, __.cm.getConfigValue(__.KEY, name.toLowerCase()) || {});
}
}]);
return NiTemplate;
}();
var NiTemplateManager = exports.NiTemplateManager = function () {
function NiTemplateManager(middler) {
var appName = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "Ni";
(0, _classCallCheck3.default)(this, NiTemplateManager);
pri(this, {
middler: middler,
KEY: appName
});
}
(0, _createClass3.default)(NiTemplateManager, [{
key: "execute",
value: function () {
var _ref7 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee7(tempName, name, params, func) {
var _pri11, _, __, temp, result;
return _regenerator2.default.wrap(function _callee7$(_context7) {
while (1) {
switch (_context7.prev = _context7.next) {
case 0:
_pri11 = pri(this), _ = _pri11._, __ = _pri11.__;
temp = __.middler.getObjectByAppName(__.KEY, tempName);
if (!temp) {
_context7.next = 10;
break;
}
_context7.next = 5;
return temp.execute(name, params);
case 5:
result = _context7.sent;
__.middler.setObjectByAppName(__.KEY, tempName, temp);
return _context7.abrupt("return", result);
case 10:
throw new Error("没有找到Template:" + tempName);
case 11:
case "end":
return _context7.stop();
}
}
}, _callee7, this);
}));
function execute(_x6, _x7, _x8, _x9) {
return _ref7.apply(this, arguments);
}
return execute;
}()
}, {
key: "excute",
value: function () {
var _ref8 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee8() {
var _args8 = arguments;
return _regenerator2.default.wrap(function _callee8$(_context8) {
while (1) {
switch (_context8.prev = _context8.next) {
case 0:
_context8.next = 2;
return this.execute.apply(this, _args8);
case 2:
return _context8.abrupt("return", _context8.sent);
case 3:
case "end":
return _context8.stop();
}
}
}, _callee8, this);
}));
function excute() {
return _ref8.apply(this, arguments);
}
return excute;
}()
}, {
key: "dispose",
value: function dispose() {
var _pri12 = pri(this),
__ = _pri12.__;
for (var i in __) {
delete __.i;
}
}
}, {
key: "getCommand",
value: function getCommand() {
var tempName = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : "";
var name = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "";
var _pri13 = pri(this),
_ = _pri13._,
__ = _pri13.__;
var temp = __.middler.getObjectByAppName(__.KEY, tempName);
if (temp) {
var result = temp.getCommand(name);
__.middler.setObjectByAppName(__.KEY, tempName, temp);
return result;
} else {
throw new Error("没有找到Template:" + tempName);
}
}
}]);
return NiTemplateManager;
}();
function hasData(data) {
if (_tool2.default.isArray(data)) {
for (var i = 0; i < data.length; i++) {
if (data[i] && hasData(data[i])) return true;
}
} else {
for (var _i in data) {
if (data[_i] !== undefined) return true;
}
}
return false;
}
var NiDataResult = exports.NiDataResult = function () {
function NiDataResult() {
(0, _classCallCheck3.default)(this, NiDataResult);
var _pri14 = pri(this, {
data: {},
kv: {},
datas: [],
hasData: hasData
}),
__ = _pri14.__;
}
(0, _createClass3.default)(NiDataResult, [{
key: "get",
value: function get(key) {
var _pri15 = pri(this),
_ = _pri15._,
__ = _pri15.__;
return __.data[key] || (__.kv[key] ? __.kv[key][1] : null);
}
}, {
key: "add",
value: function add(data, name) {
var _pri16 = pri(this),
_ = _pri16._,
__ = _pri16.__;
if (data && !__.kv[name]) {
__.data[__.datas.length] = data;
__.kv[name] = [__.datas.length, data];
__.datas.push(data);
} else if (__.kv[name]) {
var id = __.kv[name][0];
__.data[id] = data;
__.kv[name] = [__.datas.length, data];
__.datas[id] = data;
}
}
}, {
key: "last",
value: function last() {
var _pri17 = pri(this),
_ = _pri17._,
__ = _pri17.__;
return _.get(__.datas.length - 1);
}
/**
* 一般用于处理单个对象
*/
}, {
key: "single",
value: function single() {
var _pri18 = pri(this),
_ = _pri18._,
__ = _pri18.__;
return _.hasData() ? function () {
var data = _.get(__.datas.length - 1);
return data[0] && data[0][0] ? data[0][0] : {};
}() : null;
}
}, {
key: "each",
value: function each(key, func) {
var _pri19 = pri(this),
_ = _pri19._,
__ = _pri19.__;
var val = _.get(key);
if (val && _tool2.default.isArray(val)) {
return _tool2.default.each(val, func);
} else throw new Error("遍历对象不存在或者不是数组");
}
}, {
key: "clear",
value: function clear() {
var _pri20 = pri(this),
_ = _pri20._,
__ = _pri20.__;
__.data = {};
__.kv = {};
__.datas = [];
}
}, {
key: "hasData",
value: function hasData(key) {
var _pri21 = pri(this),
_ = _pri21._,
__ = _pri21.__;
return __.hasData(key ? get(key) : __.datas);
}
}]);
return NiDataResult;
}();
/**
* getDBConnection 异步
*/
var NiDataResource = exports.NiDataResource = function () {
function NiDataResource(factory) {
var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
(0, _classCallCheck3.default)(this, NiDataResource);
var _pri22 = pri(this, {
fac: factory,
params: params
}),
_ = _pri22._,
__ = _pri22.__;
}
(0, _createClass3.default)(NiDataResource, [{
key: "getDBConnection",
value: function () {
var _ref9 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee9() {
var _pri23, _, __, conn;
return _regenerator2.default.wrap(function _callee9$(_context9) {
while (1) {
switch (_context9.prev = _context9.next) {
case 0:
_pri23 = pri(this), _ = _pri23._, __ = _pri23.__;
conn = __.fac.createDBConnection();
conn.setParams(__.params);
//conn.params = V.merge(conn.params, __.params);
if (conn.isOpen) {
_context9.next = 6;
break;
}
_context9.next = 6;
return conn.open();
case 6:
return _context9.abrupt("return", conn);
case 7:
case "end":
return _context9.stop();
}
}
}, _callee9, this);
}));
function getDBConnection() {
return _ref9.apply(this, arguments);
}
return getDBConnection;
}()
}, {
key: "backDBConnection",
value: function backDBConnection(conn) {
var _pri24 = pri(this),
_ = _pri24._,
__ = _pri24.__;
__.fac.backDBConnection(conn);
}
}, {
key: "getDBCommand",
value: function getDBCommand() {
var _pri25 = pri(this),
_ = _pri25._,
__ = _pri25.__;
return __.fac.createDBCommand();
}
}]);
return NiDataResource;
}();
var NiInstanceDataResource = exports.NiInstanceDataResource = function (_NiDataResource) {
(0, _inherits3.default)(NiInstanceDataResource, _NiDataResource);
function NiInstanceDataResource(factory) {
var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
(0, _classCallCheck3.default)(this, NiInstanceDataResource);
return (0, _possibleConstructorReturn3.default)(this, (NiInstanceDataResource.__proto__ || (0, _getPrototypeOf2.default)(NiInstanceDataResource)).call(this, factory, params));
}
(0, _createClass3.default)(NiInstanceDataResource, [{
key: "getDBConnection",
value: function getDBConnection() {
return (0, _get3.default)(NiInstanceDataResource.prototype.__proto__ || (0, _getPrototypeOf2.default)(NiInstanceDataResource.prototype), "getDBConnection", this).call(this);
}
}, {
key: "backDBConnection",
value: function backDBConnection(conn) {
(0, _get3.default)(NiInstanceDataResource.prototype.__proto__ || (0, _getPrototypeOf2.default)(NiInstanceDataResource.prototype), "backDBConnection", this).call(this, conn);
}
}, {
key: "getDBCommand",
value: function getDBCommand() {
return (0, _get3.default)(NiInstanceDataResource.prototype.__proto__ || (0, _getPrototypeOf2.default)(NiInstanceDataResource.prototype), "getDBCommand", this).call(this);
}
}]);
return NiInstanceDataResource;
}(NiDataResource);
var NiStaticDataResource = exports.NiStaticDataResource = function (_NiDataResource2) {
(0, _inherits3.default)(NiStaticDataResource, _NiDataResource2);
function NiStaticDataResource(factory) {
var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
(0, _classCallCheck3.default)(this, NiStaticDataResource);
var _this6 = (0, _possibleConstructorReturn3.default)(this, (NiStaticDataResource.__proto__ || (0, _getPrototypeOf2.default)(NiStaticDataResource)).call(this, factory, params));
pri(_this6, {
conn: null
});
return _this6;
}
(0, _createClass3.default)(NiStaticDataResource, [{
key: "getDBConnection",
value: function () {
var _ref10 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee10() {
var _pri26, _, __;
return _regenerator2.default.wrap(function _callee10$(_context10) {
while (1) {
switch (_context10.prev = _context10.next) {
case 0:
_pri26 = pri(this), _ = _pri26._, __ = _pri26.__;
if (!(!__.conn || !__.conn.isOpen)) {
_context10.next = 5;
break;
}
_context10.next = 4;
return (0, _get3.default)(NiStaticDataResource.prototype.__proto__ || (0, _getPrototypeOf2.default)(NiStaticDataResource.prototype), "getDBConnection", this).call(this);
case 4:
__.conn = _context10.sent;
case 5:
return _context10.abrupt("return", __.conn);
case 6:
case "end":
return _context10.stop();
}
}
}, _callee10, this);
}));
function getDBConnection() {
return _ref10.apply(this, arguments);
}
return getDBConnection;
}()
}, {
key: "backDBConnection",
value: function backDBConnection(conn) {
var _pri27 = pri(this),
_ = _pri27._,
__ = _pri27.__;
if (conn != __.conn && conn.isOpen) (0, _get3.default)(NiStaticDataResource.prototype.__proto__ || (0, _getPrototypeOf2.default)(NiStaticDataResource.prototype), "backDBConnection", this).call(this, conn);
}
}, {
key: "getDBCommand",
value: function getDBCommand() {
return (0, _get3.default)(NiStaticDataResource.prototype.__proto__ || (0, _getPrototypeOf2.default)(NiStaticDataResource.prototype), "getDBCommand", this).call(this);
}
}]);
return NiStaticDataResource;
}(NiDataResource);
var NiPoolDataResource = exports.NiPoolDataResource = function (_NiDataResource3) {
(0, _inherits3.default)(NiPoolDataResource, _NiDataResource3);
function NiPoolDataResource(factory) {
var _this8 = this;
var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
var size = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 50;
(0, _classCallCheck3.default)(this, NiPoolDataResource);
var _this7 = (0, _possibleConstructorReturn3.default)(this, (NiPoolDataResource.__proto__ || (0, _getPrototypeOf2.default)(NiPoolDataResource)).call(this, factory, params));
pri(_this7, {
pool: new _pool.Pool(size, (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee11() {
var conn;
return _regenerator2.default.wrap(function _callee11$(_context11) {
while (1) {
switch (_context11.prev = _context11.next) {
case 0:
_context11.next = 2;
return (0, _get3.default)(NiPoolDataResource.prototype.__proto__ || (0, _getPrototypeOf2.default)(NiPoolDataResource.prototype), "getDBConnection", _this7).call(_this7);
case 2:
conn = _context11.sent;
if (!conn.dispose) conn.dispose = conn.close;
return _context11.abrupt("return", conn);
case 5:
case "end":
return _context11.stop();
}
}
}, _callee11, _this8);
})))
});
return _this7;
}
(0, _createClass3.default)(NiPoolDataResource, [{
key: "getDBConnection",
value: function () {
var _ref12 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee12() {
var _pri28, _, __;
return _regenerator2.default.wrap(function _callee12$(_context12) {
while (1) {
switch (_context12.prev = _context12.next) {
case 0:
_pri28 = pri(this), _ = _pri28._, __ = _pri28.__;
_context12.next = 3;
return __.pool.getValue();
case 3:
return _context12.abrupt("return", _context12.sent);
case 4:
case "end":
return _context12.stop();
}
}
}, _callee12, this);
}));
function getDBConnection() {
return _ref12.apply(this, arguments);
}
return getDBConnection;
}()
}, {
key: "backDBConnection",
value: function backDBConnection(conn) {
var _pri29 = pri(this),
_ = _pri29._,
__ = _pri29.__;
__.pool.setValue(conn);
}
}]);
return NiPoolDataResource;
}(NiDataResource);
var NiDataFactory = exports.NiDataFactory = function () {
function NiDataFactory() {
(0, _classCallCheck3.default)(this, NiDataFactory);
pri(this);
}
(0, _createClass3.default)(NiDataFactory, [{
key: "createDBConnection",
value: function createDBConnection() {
return new NiDataConnection();
}
}, {
key: "createDBCommand",
value: function createDBCommand() {
return new NiDataCommand();
}
}, {
key: "backDBConnection",
value: function () {
var _ref13 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee13(conn) {
return _regenerator2.default.wrap(function _callee13$(_context13) {
while (1) {
switch (_context13.prev = _context13.next) {
case 0:
if (!conn.isOpen) {
_context13.next = 3;
break;
}
_context13.next = 3;
return conn.close();
case 3:
case "end":
return _context13.stop();
}
}
}, _callee13, this);
}));
function backDBConnection(_x17) {
return _ref13.apply(this, arguments);
}
return backDBConnection;
}()
}]);
return NiDataFactory;
}();
/**
* Connection 全部是callback
*/
var NiDataConnection = exports.NiDataConnection = function () {
function NiDataConnection() {
(0, _classCallCheck3.default)(this, NiDataConnection);
pri(this);
this.isOpen = false;
this.transaction = false;
this.params = {};
}
(0, _createClass3.default)(NiDataConnection, [{
key: "setParams",
value: function setParams(paras) {
_tool2.default.merge(this.params, paras, true);
}
}, {
key: "open",
value: function () {
var _ref14 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee14() {
var _pri30, _, __;
return _regenerator2.default.wrap(function _callee14$(_context14) {
while (1) {
switch (_context14.prev = _context14.next) {
case 0:
_pri30 = pri(this), _ = _pri30._, __ = _pri30.__;
_.isOpen = true;
case 2:
case "end":
return _context14.stop();
}
}
}, _callee14, this);
}));
function open() {
return _ref14.apply(this, arguments);
}
return open;
}()
}, {
key: "close",
value: function () {
var _ref15 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee15() {
var _pri31, _, __;
return _regenerator2.default.wrap(function _callee15$(_context15) {
while (1) {
switch (_context15.prev = _context15.next) {
case 0:
_pri31 = pri(this), _ = _pri31._, __ = _pri31.__;
_.isOpen = false;
case 2:
case "end":
return _context15.stop();
}
}
}, _callee15, this);
}));
function close() {
return _ref15.apply(this, arguments);
}
return close;
}()
}, {
key: "invoke",
value: function () {
var _ref16 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee16(cmd) {
return _regenerator2.default.wrap(function _callee16$(_context16) {
while (1) {
switch (_context16.prev = _context16.next) {
case 0:
return _context16.abrupt("return", []);
case 1:
case "end":
return _context16.stop();
}
}
}, _callee16, this);
}));
function invoke(_x18) {
return _ref16.apply(this, arguments);
}
return invoke;
}()
}, {
key: "commit",
value: function () {
var _ref17 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee17() {
return _regenerator2.default.wrap(function _callee17$(_context17) {
while (1) {
switch (_context17.prev = _context17.next) {
case 0:
return _context17.abrupt("return", []);
case 1:
case "end":
return _context17.stop();
}
}
}, _callee17, this);
}));
function commit() {
return _ref17.apply(this, arguments);
}
return commit;
}()
}]);
return NiDataConnection;
}();
/**
* DBCommand 命令使用callback命令
*/
var NiDataCommand = exports.NiDataCommand = function () {
function NiDataCommand() {
(0, _classCallCheck3.default)(this, NiDataCommand);
var _pri32 = pri(this),
_ = _pri32._,
__ = _pri32.__;
_.connection = null;
_.command = "";
_.params = {
dbtype: "json"
};
}
(0, _createClass3.default)(NiDataCommand, [{
key: "execute",
value: function () {
var _ref18 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee18() {
var _pri33, _, __;
return _regenerator2.default.wrap(function _callee18$(_context18) {
while (1) {
switch (_context18.prev = _context18.next) {
case 0:
_pri33 = pri(this), _ = _pri33._, __ = _pri33.__;
if (!(!_.connection || !_.connection.isOpen)) {
_context18.next = 6;
break;
}
_tool2.default.showException("数据库未连接");
throw new Error("数据库未连接");
case 6:
_context18.prev = 6;
_context18.next = 9;
return _.connection.invoke(_);
case 9:
return _context18.abrupt("return", _context18.sent);
case 12:
_context18.prev = 12;
_context18.t0 = _context18["catch"](6);
_tool2.default.showException("connection invoke success方法", _context18.t0);
throw _context18.t0;
case 16:
case "end":
return _context18.stop();
}
}
}, _callee18, this, [[6, 12]]);
}));
function execute() {
return _ref18.apply(this, arguments);
}
return execute;
}()
}, {
key: "excute",
value: function () {
var _ref19 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee19() {
var _args19 = arguments;
return _regenerator2.default.wrap(function _callee19$(_context19) {
while (1) {
switch (_context19.prev = _context19.next) {
case 0:
_context19.next = 2;
return this.execute.apply(this, _args19);
case 2:
return _context19.abrupt("return", _context19.sent);
case 3:
case "end":
return _context19.stop();
}
}
}, _callee19, this);
}));
function excute() {
return _ref19.apply(this, arguments);
}
return excute;
}()
}]);
return NiDataCommand;
}();
/**
* 可以针对每个函数分别设置缓存方式和缓存字段
* @param {*} res
* @param {*} cacheres
* @param {*} cm
* @param {*} params
*/
var NiTemplateDecorator = exports.NiTemplateDecorator = function (_NiTemplate) {
(0, _inherits3.default)(NiTemplateDecorator, _NiTemplate);
function NiTemplateDecorator(res, cacheres, cm) {
var _this10 = this;
var params = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};
(0, _classCallCheck3.default)(this, NiTemplateDecorator);
var _this9 = (0, _possibleConstructorReturn3.default)(this, (NiTemplateDecorator.__proto__ || (0, _getPrototypeOf2.default)(NiTemplateDecorator)).call(this, res, cm));
var that = _this9;
var _pri34 = pri(that, {
KEY: "Ni",
lstCmd2: {},
params: params,
cacheres: cacheres
}),
_ = _pri34._,
__ = _pri34.__;
var _addCommand = __.addCommand;
var _execute = __.execute;
__.addCommand = function (name, params) {
var _pri35 = pri(that),
_ = _pri35._,
__ = _pri35.__;
var index = __.lstCmd.length;
_addCommand.apply(_, [name, params]);
if (__.lstCmd.length != index) {
var command = null;
var cmd = __.cm.getConfigValue(__.KEY, name.toLowerCase() + ".cache") || __.cm.getConfigValue(__.KEY, name.toLowerCase() + ".clear");
if (cmd) {
command = cmd.command;
__.lstCmd2[index] = {
name: command,
key: name,
params: cmd.merge({
cacheKey: "" + _tool2.default.hash(name + ".Set." + _tool2.default.toJsonString(__.lstCmd[__.lstCmd.length - 1].params))
}, cmd.params, __.lstCmd[__.lstCmd.length - 1].params),
oriparams: cmd.params
};
}
}
};
__.execute = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee21() {
var _pri36, _, __, _cms, conn, cmd, i;
return _regenerator2.default.wrap(function _callee21$(_context21) {
while (1) {
switch (_context21.prev = _context21.next) {
case 0:
_pri36 = pri(that), _ = _pri36._, __ = _pri36.__;
_cms = __.lstCmd;
__.lstCmd = [];
if (!(_cms.length > 0)) {
_context21.next = 28;
break;
}
_context21.next = 6;
return __.res.getDBConnection();
case 6:
conn = _context21.sent;
_context21.prev = 7;
if (_cms.length > 1) conn.transaction = true;
cmd = __.res.getDBCommand();
cmd.connection = conn;
//执行过程存在严重漏洞 考虑 直接执行与非直接执行的异同
i = 0;
_context21.next = 14;
return _tool2.default.each(_cms, function () {
var _ref21 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee20(v) {
var _nicmd, _conn, _cmd, data, _data2, _nicmd2, _conn2, _cmd2, _data;
return _regenerator2.default.wrap(function _callee20$(_context20) {
while (1) {
switch (_context20.prev = _context20.next) {
case 0:
_nicmd = __.lstCmd2[i++];
if (!_nicmd) {
_context20.next = 22;
break;
}
_context20.next = 4;
return __.cacheres.getDBConnection();
case 4:
_conn = _context20.sent;
_context20.prev = 5;
_cmd = __.cacheres.getDBCommand();
_cmd.connection = _conn;
_cmd.command = _nicmd.name;
_cmd.params = _tool2.default.merge(_nicmd.params, v.params);
_cmd.oriparams = _nicmd.oriparams;
_cmd.dbtype = v.dbtype;
_cmd.jsonp = v.jsonp;
_context20.next = 15;
return _cmd.execute();
case 15:
data = _context20.sent;
if (!hasData(data)) {
_context20.next = 19;
break;
}
__.result.add(!data || _tool2.default.isArray(data) && data.length == 0 ? false : _tool2.default.json(data[0].cacheValue || data[0][0] && data[0][0].cacheValue), v.key);
return _context20.abrupt("return", false);
case 19:
_context20.prev = 19;
__.cacheres.backDBConnection(_conn);
return _context20.finish(19);
case 22:
cmd.command = v.name;
cmd.params = v.params;
cmd.oriparams = v.oriparams;
cmd.dbtype = v.dbtype;
cmd.jsonp = v.jsonp;
//需要知晓connection的执行原理
if (!conn.transaction) {
_context20.next = 31;
break;
}
cmd.execute();
_context20.next = 55;
break;
case 31:
_context20.next = 33;
return cmd.execute();
case 33:
_data2 = _context20.sent;
__.result.add(!_data2 || _tool2.default.isArray(_data2) && _data2.length == 0 ? false : _data2, v.key);
if (!(_data2 && _data2.length > 0 && !(_data2.length == 1 && _data2[0].length == 0))) {
_context20.next = 55;
break;
}
//新增缓存
_nicmd2 = __.cm.getConfigValue(__.KEY, v.key.toLowerCase() + ".set");
if (!_nicmd2) {
_context20.next = 55;
break;
}
_context20.next = 40;
return __.cacheres.getDBConnection();
case 40:
_conn2 = _context20.sent;
_context20.prev = 41;
_cmd2 = __.cacheres.getDBCommand();
_cmd2.connection = _conn2;
_cmd2.command = _nicmd2.command;
_cmd2.params = _nicmd2.merge({
cacheKey: "" + _tool2.default.hash(v.key + ".Set." + _tool2.default.toJsonString(cmd.params)),
cacheValue: _tool2.default.toJsonString(_data2)
}, _nicmd2.params, cmd.params);
_cmd2.oriparams = _nicmd2.oriparams;
_cmd2.dbtype = v.dbtype;
_cmd2.jsonp = v.jsonp;
_context20.next = 51;
return _cmd2.execute();
case 51:
_data = _context20.sent;
case 52:
_context20.prev = 52;
__.cacheres.backDBConnection(_conn2);
return _context20.finish(52);
case 55:
return _context20.abrupt("return", false);
case 56:
case "end":
return _context20.stop();
}
}
}, _callee20, _this10, [[5,, 19, 22], [41,, 52, 55]]);
}));
return function (_x20) {
return _ref21.apply(this, arguments);
};
}(), true);
case 14:
if (!(conn.transaction && conn.commit)) {
_context21.next = 17;
break;
}
_context21