@@ -898,6 +898,20 @@ https://github.com/Tencent/APIJSON/issues
898898 obj[key] = val
899899 }
900900
901+ var DB_SELECT = 'DB_SELECT'
902+ // var DB_COUNT = 'DB_COUNT'
903+ var DB_INSERT = 'DB_INSERT'
904+ var DB_UPDATE = 'DB_UPDATE'
905+ var DB_DELETE = 'DB_DELETE'
906+
907+ var DB_API_MAP = {
908+ [DB_SELECT]: '/get',
909+ // [DB_COUNT]: '/head',
910+ [DB_INSERT]: '/post',
911+ [DB_UPDATE]: '/put',
912+ [DB_DELETE]: '/delete'
913+ }
914+
901915 var RANDOM_DB = 'RANDOM_DB'
902916 var RANDOM_IN = 'RANDOM_IN'
903917 var RANDOM_INT = 'RANDOM_INT'
@@ -11442,6 +11456,18 @@ Content-Type: ` + contentType) + (StringUtil.isEmpty(headerStr, true) ? '' : hea
1144211456 // }
1144311457
1144411458 var toEval = value;
11459+ var isInject = true;
11460+ var isPre = false; // 避免执行副作用代码 true;
11461+ var isTest = false;
11462+ var method = null;
11463+ var type = null;
11464+ var url = null;
11465+ var req = json;
11466+ var header = head;
11467+ var res = {};
11468+ var data = res.data;
11469+ var err = null;
11470+
1144511471 if (start > 0 && end > start) {
1144611472 var funWithOrder = value.substring(0, start);
1144711473 var prefixEnd = funWithOrder.indexOf('ORDER_')
@@ -11453,6 +11479,9 @@ Content-Type: ` + contentType) + (StringUtil.isEmpty(headerStr, true) ? '' : hea
1145311479 prefixEnd = funWithOrder.indexOf('CTX_')
1145411480 if (prefixEnd < 0) {
1145511481 prefixEnd = funWithOrder.indexOf('CUR_')
11482+ if (prefixEnd < 0) {
11483+ prefixEnd = funWithOrder.indexOf('DB_')
11484+ }
1145611485 }
1145711486 }
1145811487 }
@@ -11474,6 +11503,47 @@ Content-Type: ` + contentType) + (StringUtil.isEmpty(headerStr, true) ? '' : hea
1147411503 }
1147511504
1147611505 var fun = splitIndex < 0 ? funWithOrder : funWithOrder.substring(0, splitIndex);
11506+ var url = DB_API_MAP[fun]
11507+ if (StringUtil.isNotEmpty(url)) {
11508+ var arg = args[0]
11509+ var isSQL = ! JSONResponse.isObject(arg)
11510+ var url = isSQL ? '/sql/execute' : url
11511+ var uri = arg[1] || App.schema
11512+ // if (StringUtil.isString(uri) && StringUtil.isNotEmpty(uri) && ! uri.includes('://')) {
11513+ // uri = App.getBaseUrl() + '/' + uri
11514+ // }
11515+ var req2 = isSQL ? {
11516+ database: arg[0] || App.database,
11517+ // uri: uri,
11518+ schema: uri,
11519+ sql: arg[2],
11520+ args: args[3] // TODO 尝试 eval 获取变量对应值
11521+ } : arg;
11522+
11523+ App.adminRequest(url, req2, head, function (url, res, err) {
11524+ try {
11525+ App.onResponse(url, res, err)
11526+ } catch (e) {}
11527+
11528+ var data = (res || {}).data || {}
11529+ args[0] = 'data'
11530+ if (err != null) {
11531+ var arg1 = args[1]
11532+ args[1] = StringUtil.isEmpty(arg1) ? err : StringUtil.get(arg1) + '; \n' + StringUtil.get(err);
11533+ }
11534+
11535+ toEval = 'put4Path((ctx || {}).ctx || {}, ' + JSON.stringify(path) + ', ' + args.join() + ')';
11536+ try {
11537+ var ret = eval(StringUtil.trim(preScript) + '\n;\n(' + toEval + ')')
11538+ invoke(ret, which, p_k, pathKeys, key, lastKeyInPath);
11539+ } catch (e) {
11540+ throw new Error(e.message + '\n; 第 ' + i + ' 行:' + line)
11541+ }
11542+
11543+ });
11544+
11545+ continue;
11546+ }
1147711547
1147811548 if (fun.startsWith('ORDER_') && /^[_A-Z]+$/g.test(fun)) { // [ORDER_DB, ORDER_IN, ORDER_INT].indexOf(fun) >= 0) { //顺序函数
1147911549 var stepStr = splitIndex < 0 ? null : funWithOrder.substring(splitIndex + 1, funWithOrder.length);
@@ -11644,17 +11714,6 @@ Content-Type: ` + contentType) + (StringUtil.isEmpty(headerStr, true) ? '' : hea
1164411714 toEval = prefix + toEval
1164511715 }
1164611716
11647- var isInject = true;
11648- var isPre = false; // 避免执行副作用代码 true;
11649- var isTest = false;
11650- var method = null;
11651- var type = null;
11652- var url = null;
11653- var req = json;
11654- var header = head;
11655- var res = {};
11656- var data = res.data;
11657- var err = null;
1165811717 try {
1165911718 var ret = eval(StringUtil.trim(preScript) + '\n;\n(' + toEval + ')')
1166011719 invoke(ret, which, p_k, pathKeys, key, lastKeyInPath);
0 commit comments