Skip to content

Commit 6e7b847

Browse files
committed
Java:MultiDataSource 中 APIAuto 参数注入:新增支持数据库增删改查快捷配置 DB_SELECT, DB_INSERT, DB_UPDATE, DB_DELETE
1 parent 73ef294 commit 6e7b847

1 file changed

Lines changed: 70 additions & 11 deletions

File tree

  • APIJSON-Java-Server/APIJSONBoot-MultiDataSource/src/main/resources/static/api/js

‎APIJSON-Java-Server/APIJSONBoot-MultiDataSource/src/main/resources/static/api/js/main.js‎

Lines changed: 70 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)