8000 新增 @catalog 指定数据库目录,完善 @namespace 和 @catalog 全局关键词及 JOIN 处理,优化代码 · APIJSON/APIJSON@a4108de · GitHub
[go: up one dir, main page]

Skip to content

Commit a4108de

Browse files
committed
新增 @catalog 指定数据库目录,完善 @namespace@catalog 全局关键词及 JOIN 处理,优化代码
1 parent f82c1de commit a4108de

File tree

8 files changed

+230
-135
lines changed

8 files changed

+230
-135
lines changed

APIJSONORM/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
<groupId>com.github.Tencent</groupId>
77
<artifactId>APIJSON</artifactId>
8-
<version>7.5.5</version>
8+
<version>7.5.6</version>
99
<packaging>jar</packaging>
1010

1111
<name>APIJSONORM</name>

APIJSONORM/src/main/java/apijson/JSONObject.java

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -140,8 +140,9 @@ public JSONObject setUserIdIn(List<Object> list) {
140140
public static final String KEY_ROLE = "@role"; //角色,拥有对某些数据的某些操作的权限
141141
public static final String KEY_DATABASE = "@database"; //数据库类型,默认为MySQL
142142
public static final String KEY_DATASOURCE = "@datasource"; //数据源
143-
public static final String KEY_NAMESPACE = "@namespace"; //命名空间,Table在非默认namespace内时需要声明
144-
public static final String KEY_SCHEMA = "@schema"; //数据库,Table在非默认schema内时需要声明
143+
public static final String KEY_NAMESPACE = "@namespace"; //命名空间,Table 在非默认 namespace 内时需要声明
144+
public static final String KEY_CATALOG = "@catalog"; //目录,Table 在非默认 catalog 内时需要声明
145+
public static final String KEY_SCHEMA = "@schema"; //数据库,Table 在非默认 schema 内时需要声明
145146
public static final String KEY_EXPLAIN = "@explain"; //分析 true/false
146147
public static final String KEY_CACHE = "@cache"; //缓存 RAM/ROM/ALL
147148
public static final String KEY_COLUMN = "@column"; //查询的Table字段或SQL函数
@@ -172,6 +173,7 @@ public JSONObject setUserIdIn(List<Object> list) {
172173
TABLE_KEY_LIST.add(KEY_DATABASE);
173174
TABLE_KEY_LIST.add(KEY_DATASOURCE);
174175
TABLE_KEY_LIST.add(KEY_NAMESPACE);
176+
TABLE_KEY_LIST.add(KEY_CATALOG);
175177
TABLE_KEY_LIST.add(KEY_SCHEMA);
176178
TABLE_KEY_LIST.add(KEY_EXPLAIN);
177179
TABLE_KEY_LIST.add(KEY_CACHE);
@@ -269,6 +271,13 @@ public JSONObject setDatasource(String datasource) {
269271
public JSONObject setNamespace(String namespace) {
270272
return puts(KEY_NAMESPACE, namespace);
271273
}
274+
/**set catalog where table was puts
275+
* @param catalog
276+
* @return this
277+
*/
278+
public JSONObject setCatalog(String catalog) {
279+
return puts(KEY_CATALOG, catalog);
280+
}
272281
/**set schema where table was puts
273282
* @param schema
274283
* @return this

APIJSONORM/src/main/java/apijson/orm/AbstractObjectParser.java

Lines changed: 30 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -328,22 +328,42 @@ else if (_method == PUT && value instanceof JSONArray && (whereList == null || w
328328
}
329329

330330
if (isTable) {
331-
if (parser.getGlobalDatabase() != null && sqlRequest.get(JSONRequest.KEY_DATABASE) == null) {
332-
sqlRequest.put(JSONRequest.KEY_DATABASE, parser.getGlobalDatabase());
331+
// parser.onVerifyRole 已处理 globalRole
332+
333+
String db = parser.getGlobalDatabase();
334+
if (db != null) {
335+
sqlRequest.putIfAbsent(JSONRequest.KEY_DATABASE, db);
336+
}
337+
338+
String ds = parser.getGlobalDatasource();
339+
if (ds != null) {
340+
sqlRequest.putIfAbsent(JSONRequest.KEY_DATASOURCE, ds);
341+
}
342+
343+
String ns = parser.getGlobalNamespace();
344+
if (ns != null) {
345+
sqlRequest.putIfAbsent(JSONRequest.KEY_NAMESPACE, ns);
333346
}
334-
if (parser.getGlobalSchema() != null && sqlRequest.get(JSONRequest.KEY_SCHEMA) == null) {
335-
sqlRequest.put(JSONRequest.KEY_SCHEMA, parser.getGlobalSchema());
347+
348+
String cl = parser.getGlobalCatalog();
349+
if (cl != null) {
350+
sqlRequest.putIfAbsent(JSONRequest.KEY_CATALOG, cl);
336351
}
337-
if (parser.getGlobalDatasource() != null && sqlRequest.get(JSONRequest.KEY_DATASOURCE) == null) {
338-
sqlRequest.put(JSONRequest.KEY_DATASOURCE, parser.getGlobalDatasource());
352+
353+
String sch = parser.getGlobalSchema();
354+
if (sch != null) {
355+
sqlRequest.putIfAbsent(JSONRequest.KEY_SCHEMA, sch);
339356
}
340357

341358
if (isSubquery == false) { // 解决 SQL 语法报错,子查询不能 EXPLAIN
342-
if (parser.getGlobalExplain() != null && sqlRequest.get(JSONRequest.KEY_EXPLAIN) == null) {
343-
sqlRequest.put(JSONRequest.KEY_EXPLAIN, parser.getGlobalExplain());
359+
Boolean exp = parser.getGlobalExplain();
360+
if (sch != null) {
361+
sqlRequest.putIfAbsent(JSONRequest.KEY_EXPLAIN, exp);
344362
}
345-
if (parser.getGlobalCache() != null && sqlRequest.get(JSONRequest.KEY_CACHE) == null) {
346-
sqlRequest.put(JSONRequest.KEY_CACHE, parser.getGlobalCache());
363+
364+
String cache = parser.getGlobalCache();
365+
if (cache != null) {
366+
sqlRequest.putIfAbsent(JSONRequest.KEY_CACHE, cache);
347367
}
348368
}
349369
}

APIJSONORM/src/main/java/apijson/orm/AbstractParser.java

Lines changed: 43 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -320,15 +320,7 @@ public AbstractParser<T> setGlobalDatabase(String globalDatabase) {
320320
public String getGlobalDatabase() {
321321
return globalDatabase;
322322
}
323-
protected String globalSchema;
324-
public AbstractParser<T> setGlobalSchema(String globalSchema) {
325-
this.globalSchema = globalSchema;
326-
return this;
327-
}
328-
@Override
329-
public String getGlobalSchema() {
330-
return globalSchema;
331-
}
323+
332324
protected String globalDatasource;
333325
@Override
334326
public String getGlobalDatasource() {
@@ -339,6 +331,36 @@ public AbstractParser<T> setGlobalDatasource(String globalDatasource) {
339331
return this;
340332
}
341333

334+
protected String globalNamespace;
335+
public AbstractParser<T> setGlobalNamespace(String globalNamespace) {
336+
this.globalNamespace = globalNamespace;
337+
return this;
338+
}
339+
@Override
340+
public String getGlobalNamespace() {
341+
return globalNamespace;
342+
}
343+
344+
protected String globalCatalog;
345+
public AbstractParser<T> setGlobalCatalog(String globalCatalog) {
346+
this.globalCatalog = globalCatalog;
347+
return this;
348+
}
349+
@Override
350+
public String getGlobalCatalog() {
351+
return globalCatalog;
352+
}
353+
354+
protected String globalSchema;
355+
public AbstractParser<T> setGlobalSchema(String globalSchema) {
356+
this.globalSchema = globalSchema;
357+
return this;
358+
}
359+
@Override
360+
public String getGlobalSchema() {
361+
return globalSchema;
362+
}
363+
342364
protected Boolean globalExplain;
343365
public AbstractParser<T> setGlobalExplain(Boolean globalExplain) {
344366
this.globalExplain = globalExplain;
@@ -508,19 +530,25 @@ public JSONObject parseResponse(JSONObject request) {
508530
}
509531

510532
try {
511-
setGlobalFormat(requestObject.getBoolean(JSONRequest.KEY_FORMAT));
512533
setGlobalDatabase(requestObject.getString(JSONRequest.KEY_DATABASE));
513-
setGlobalSchema(requestObject.getString(JSONRequest.KEY_SCHEMA));
514534
setGlobalDatasource(requestObject.getString(JSONRequest.KEY_DATASOURCE));
535+
setGlobalNamespace(requestObject.getString(JSONRequest.KEY_NAMESPACE));
536+
setGlobalCatalog(requestObject.getString(JSONRequest.KEY_CATALOG));
537+
setGlobalSchema(requestObject.getString(JSONRequest.KEY_SCHEMA));
538+
515539
setGlobalExplain(requestObject.getBoolean(JSONRequest.KEY_EXPLAIN));
516540
setGlobalCache(requestObject.getString(JSONRequest.KEY_CACHE));
541+
setGlobalFormat(requestObject.getBoolean(JSONRequest.KEY_FORMAT));
517542

518-
requestObject.remove(JSONRequest.KEY_FORMAT);
519543
requestObject.remove(JSONRequest.KEY_DATABASE);
520-
requestObject.remove(JSONRequest.KEY_SCHEMA);
521544
requestObject.remove(JSONRequest.KEY_DATASOURCE);
545+
requestObject.remove(JSONRequest.KEY_NAMESPACE);
546+
requestObject.remove(JSONRequest.KEY_CATALOG);
547+
requestObject.remove(JSONRequest.KEY_SCHEMA);
548+
522549
requestObject.remove(JSONRequest.KEY_EXPLAIN);
523550
requestObject.remove(JSONRequest.KEY_CACHE);
551+
requestObject.remove(JSONRequest.KEY_FORMAT);
524552
} catch (Exception e) {
525553
return extendErrorResult(requestObject, e, requestMethod, getRequestURL(), isRoot);
526554
}
@@ -1462,6 +1490,8 @@ else if (childKeys.length == 1 && JSONRequest.isTableKey(childKeys[0])) { //
14621490
JOIN_COPY_KEY_LIST = new ArrayList<String>();
14631491
JOIN_COPY_KEY_LIST.add(JSONRequest.KEY_ROLE);
14641492
JOIN_COPY_KEY_LIST.add(JSONRequest.KEY_DATABASE);
1493+
JOIN_COPY_KEY_LIST.add(JSONRequest.KEY_NAMESPACE);
1494+
JOIN_COPY_KEY_LIST.add(JSONRequest.KEY_CATALOG);
14651495
JOIN_COPY_KEY_LIST.add(JSONRequest.KEY_SCHEMA);
14661496
JOIN_COPY_KEY_LIST.add(JSONRequest.KEY_DATASOURCE);
14671497
JOIN_COPY_KEY_LIST.add(JSONRequest.KEY_COLUMN);

0 commit comments

Comments
 (0)
0