Skip to content

Commit

Permalink
[ISSUE #9821] Update data-source-plugin input and output parameters (#…
Browse files Browse the repository at this point in the history
…9851)

* Add MapperContext and MapperResult.

* Update ConfigInfoAggrMapper by MapperContext and MapperResult.

Update ConfigInfoAggrMapper by MapperContext and MapperResult.

* resolve git conflicts.
  • Loading branch information
The-Gamer-01 authored Feb 10, 2023
1 parent 882c6ed commit 1ff7a3f
Show file tree
Hide file tree
Showing 11 changed files with 565 additions and 88 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,8 @@
import com.alibaba.nacos.plugin.datasource.MapperManager;
import com.alibaba.nacos.plugin.datasource.constants.TableConstant;
import com.alibaba.nacos.plugin.datasource.mapper.ConfigInfoAggrMapper;
import com.alibaba.nacos.plugin.datasource.model.MapperContext;
import com.alibaba.nacos.plugin.datasource.model.MapperResult;
import com.alibaba.nacos.sys.env.EnvUtil;
import org.springframework.context.annotation.Conditional;
import org.springframework.stereotype.Service;
Expand Down Expand Up @@ -232,12 +234,17 @@ public boolean batchRemoveAggr(final String dataId, final String group, final St
final String tenantTmp = StringUtils.isBlank(tenant) ? StringUtils.EMPTY : tenant;
ConfigInfoAggrMapper configInfoAggrMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(),
TableConstant.CONFIG_INFO_AGGR);
final String sql = configInfoAggrMapper.batchRemoveAggr(datumList.size());
final Object[] args = new Object[3 + datumList.size()];
args[0] = dataId;
args[1] = group;
args[2] = tenantTmp;
System.arraycopy(datumList.toArray(), 0, args, 3, datumList.size());

MapperContext context = new MapperContext();
context.put("datum_id", datumList);
context.put("data_id", dataId);
context.put("group_id", group);
context.put("tenant_id", tenantTmp);

MapperResult mapperResult = configInfoAggrMapper.batchRemoveAggr(context);

final String sql = mapperResult.getSql();
final Object[] args = mapperResult.getParamList().toArray();
EmbeddedStorageContextUtils.addSqlContext(sql, args);

try {
Expand Down Expand Up @@ -272,12 +279,20 @@ public int aggrConfigInfoCount(String dataId, String group, String tenant, List<
final String tenantTmp = StringUtils.isBlank(tenant) ? StringUtils.EMPTY : tenant;
ConfigInfoAggrMapper configInfoAggrMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(),
TableConstant.CONFIG_INFO_AGGR);
String sql = configInfoAggrMapper.aggrConfigInfoCount(datumIds.size(), isIn);

List<Object> objectList = com.alibaba.nacos.common.utils.CollectionUtils.list(dataId, group, tenantTmp);
objectList.addAll(datumIds);
MapperContext context = new MapperContext();
context.put("datum_id", datumIds);
context.put("isIn", true);
context.put("data_id", dataId);
context.put("group_id", group);
context.put("tenant_id", tenantTmp);

MapperResult mapperResult = configInfoAggrMapper.aggrConfigInfoCount(context);

Integer result = databaseOperate.queryOne(sql, objectList.toArray(), Integer.class);
String sql = mapperResult.getSql();
Object[] args = mapperResult.getParamList().toArray();

Integer result = databaseOperate.queryOne(sql, args, Integer.class);
if (result == null) {
throw new IllegalArgumentException("aggrConfigInfoCount error");
}
Expand All @@ -303,9 +318,17 @@ public List<ConfigInfoAggr> findConfigInfoAggr(String dataId, String group, Stri
String tenantTmp = StringUtils.isBlank(tenant) ? StringUtils.EMPTY : tenant;
ConfigInfoAggrMapper configInfoAggrMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(),
TableConstant.CONFIG_INFO_AGGR);
String sql = configInfoAggrMapper.findConfigInfoAggrIsOrdered();

return databaseOperate.queryMany(sql, new Object[] {dataId, group, tenantTmp}, CONFIG_INFO_AGGR_ROW_MAPPER);
MapperContext context = new MapperContext();
context.put("data_id", dataId);
context.put("group_id", group);
context.put("tenant_id", tenantTmp);

MapperResult mapperResult = configInfoAggrMapper.findConfigInfoAggrIsOrdered(context);
String sql = mapperResult.getSql();
Object[] args = mapperResult.getParamList().toArray();

return databaseOperate.queryMany(sql, args, CONFIG_INFO_AGGR_ROW_MAPPER);

}

Expand All @@ -316,13 +339,22 @@ public Page<ConfigInfoAggr> findConfigInfoAggrByPage(String dataId, String group
ConfigInfoAggrMapper configInfoAggrMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(),
TableConstant.CONFIG_INFO_AGGR);
final int startRow = (pageNo - 1) * pageSize;
String sqlCountRows = configInfoAggrMapper.select(Arrays.asList("count(*)"),
final String sqlCountRows = configInfoAggrMapper.select(Arrays.asList("count(*)"),
Arrays.asList("data_id", "group_id", "tenant_id"));
String sqlFetchRows = configInfoAggrMapper.findConfigInfoAggrByPageFetchRows(startRow, pageSize);

MapperContext context = new MapperContext();
context.put("data_id", dataId);
context.put("group_id", group);
context.put("tenant_id", tenantTmp);
context.put("startRow", startRow);
context.put("pageSize", pageSize);
MapperResult mapperResult = configInfoAggrMapper.findConfigInfoAggrByPageFetchRows(context);
String sqlFetchRows = mapperResult.getSql();
Object[] sqlFetchArgs = mapperResult.getParamList().toArray();

PaginationHelper<ConfigInfoAggr> helper = createPaginationHelper();
return helper.fetchPageLimit(sqlCountRows, new Object[] {dataId, group, tenantTmp}, sqlFetchRows,
new Object[] {dataId, group, tenantTmp}, pageNo, pageSize, CONFIG_INFO_AGGR_ROW_MAPPER);
sqlFetchArgs, pageNo, pageSize, CONFIG_INFO_AGGR_ROW_MAPPER);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,8 @@
import com.alibaba.nacos.plugin.datasource.mapper.ConfigTagsRelationMapper;
import com.alibaba.nacos.plugin.datasource.mapper.HistoryConfigInfoMapper;
import com.alibaba.nacos.plugin.datasource.mapper.TenantInfoMapper;
import com.alibaba.nacos.plugin.datasource.model.MapperContext;
import com.alibaba.nacos.plugin.datasource.model.MapperResult;
import com.alibaba.nacos.plugin.encryption.handler.EncryptionHandler;
import com.alibaba.nacos.sys.env.EnvUtil;
import org.apache.commons.collections.CollectionUtils;
Expand Down Expand Up @@ -753,12 +755,18 @@ public boolean batchRemoveAggr(final String dataId, final String group, final St
final String tenantTmp = StringUtils.isBlank(tenant) ? StringUtils.EMPTY : tenant;
ConfigInfoAggrMapper configInfoAggrMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(),
TableConstant.CONFIG_INFO_AGGR);
final String sql = configInfoAggrMapper.batchRemoveAggr(datumList.size());
final Object[] args = new Object[3 + datumList.size()];
args[0] = dataId;
args[1] = group;
args[2] = tenantTmp;
System.arraycopy(datumList.toArray(), 0, args, 3, datumList.size());

MapperContext context = new MapperContext();
context.put("datum_id", datumList);
context.put("data_id", dataId);
context.put("group_id", group);
context.put("tenant_id", tenantTmp);

MapperResult mapperResult = configInfoAggrMapper.batchRemoveAggr(context);
String sql = mapperResult.getSql();
List<Object> paramList = mapperResult.getParamList();
Object[] args = paramList.toArray();

EmbeddedStorageContextUtils.addSqlContext(sql, args);

try {
Expand Down Expand Up @@ -1081,12 +1089,20 @@ public int aggrConfigInfoCount(String dataId, String group, String tenant, List<
}
final String tenantTmp = StringUtils.isBlank(tenant) ? StringUtils.EMPTY : tenant;
ConfigInfoAggrMapper configInfoAggrMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.CONFIG_INFO_AGGR);
String sql = configInfoAggrMapper.aggrConfigInfoCount(datumIds.size(), isIn);

MapperContext context = new MapperContext();
context.put("datum_id", datumIds);
context.put("isIn", true);
context.put("data_id", dataId);
context.put("group_id", group);
context.put("tenant_id", tenantTmp);

List<Object> objectList = com.alibaba.nacos.common.utils.CollectionUtils.list(dataId, group, tenantTmp);
objectList.addAll(datumIds);
MapperResult mapperResult = configInfoAggrMapper.aggrConfigInfoCount(context);

Integer result = databaseOperate.queryOne(sql, objectList.toArray(), Integer.class);
String sql = mapperResult.getSql();
Object[] args = mapperResult.getParamList().toArray();

Integer result = databaseOperate.queryOne(sql, args, Integer.class);
if (result == null) {
throw new IllegalArgumentException("aggrConfigInfoCount error");
}
Expand Down Expand Up @@ -1388,10 +1404,17 @@ public ConfigInfoAggr findSingleConfigInfoAggr(String dataId, String group, Stri
public List<ConfigInfoAggr> findConfigInfoAggr(String dataId, String group, String tenant) {
String tenantTmp = StringUtils.isBlank(tenant) ? StringUtils.EMPTY : tenant;
ConfigInfoAggrMapper configInfoAggrMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.CONFIG_INFO_AGGR);
String sql = configInfoAggrMapper.findConfigInfoAggrIsOrdered();

return databaseOperate.queryMany(sql, new Object[] {dataId, group, tenantTmp}, CONFIG_INFO_AGGR_ROW_MAPPER);

MapperContext context = new MapperContext();
context.put("data_id", dataId);
context.put("group_id", group);
context.put("tenant_id", tenantTmp);

MapperResult mapperResult = configInfoAggrMapper.findConfigInfoAggrIsOrdered(context);
String sql = mapperResult.getSql();
Object[] args = mapperResult.getParamList().toArray();

return databaseOperate.queryMany(sql, args, CONFIG_INFO_AGGR_ROW_MAPPER);
}

@Override
Expand All @@ -1400,13 +1423,22 @@ public Page<ConfigInfoAggr> findConfigInfoAggrByPage(String dataId, String group
String tenantTmp = StringUtils.isBlank(tenant) ? StringUtils.EMPTY : tenant;
ConfigInfoAggrMapper configInfoAggrMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.CONFIG_INFO_AGGR);
final int startRow = (pageNo - 1) * pageSize;
String sqlCountRows = configInfoAggrMapper
final String sqlCountRows = configInfoAggrMapper
.select(Arrays.asList("count(*)"), Arrays.asList("data_id", "group_id", "tenant_id"));
String sqlFetchRows = configInfoAggrMapper.findConfigInfoAggrByPageFetchRows(startRow, pageSize);

MapperContext context = new MapperContext();
context.put("data_id", dataId);
context.put("group_id", group);
context.put("tenant_id", tenantTmp);
context.put("startRow", startRow);
context.put("pageSize", pageSize);
MapperResult mapperResult = configInfoAggrMapper.findConfigInfoAggrByPageFetchRows(context);
String sqlFetchRows = mapperResult.getSql();
Object[] sqlFethcArgs = mapperResult.getParamList().toArray();

PaginationHelper<ConfigInfoAggr> helper = createPaginationHelper();
return helper.fetchPageLimit(sqlCountRows, new Object[] {dataId, group, tenantTmp}, sqlFetchRows,
new Object[] {dataId, group, tenantTmp}, pageNo, pageSize, CONFIG_INFO_AGGR_ROW_MAPPER);
sqlFethcArgs, pageNo, pageSize, CONFIG_INFO_AGGR_ROW_MAPPER);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,8 @@
import com.alibaba.nacos.plugin.datasource.MapperManager;
import com.alibaba.nacos.plugin.datasource.constants.TableConstant;
import com.alibaba.nacos.plugin.datasource.mapper.ConfigInfoAggrMapper;
import com.alibaba.nacos.plugin.datasource.model.MapperContext;
import com.alibaba.nacos.plugin.datasource.model.MapperResult;
import com.alibaba.nacos.sys.env.EnvUtil;
import org.springframework.context.annotation.Conditional;
import org.springframework.dao.DataAccessException;
Expand Down Expand Up @@ -238,12 +240,17 @@ public boolean batchRemoveAggr(final String dataId, final String group, final St
final String tenantTmp = StringUtils.isBlank(tenant) ? StringUtils.EMPTY : tenant;
ConfigInfoAggrMapper configInfoAggrMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(),
TableConstant.CONFIG_INFO_AGGR);
final String sql = configInfoAggrMapper.batchRemoveAggr(datumList.size());
final Object[] args = new Object[3 + datumList.size()];
args[0] = dataId;
args[1] = group;
args[2] = tenantTmp;
System.arraycopy(datumList.toArray(), 0, args, 3, datumList.size());

MapperContext context = new MapperContext();
context.put("datum_id", datumList);
context.put("data_id", dataId);
context.put("group_id", group);
context.put("tenant_id", tenantTmp);

MapperResult result = configInfoAggrMapper.batchRemoveAggr(context);
final String sql = result.getSql();
final Object[] args = result.getParamList().toArray();

try {
jt.update(sql, args);
} catch (CannotGetJdbcConnectionException e) {
Expand Down Expand Up @@ -274,10 +281,18 @@ public int aggrConfigInfoCount(String dataId, String group, String tenant, List<
final String tenantTmp = StringUtils.isBlank(tenant) ? StringUtils.EMPTY : tenant;
ConfigInfoAggrMapper configInfoAggrMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(),
TableConstant.CONFIG_INFO_AGGR);
String sql = configInfoAggrMapper.aggrConfigInfoCount(datumIds.size(), isIn);
List<Object> objectList = com.alibaba.nacos.common.utils.CollectionUtils.list(dataId, group, tenantTmp);
objectList.addAll(datumIds);
Integer result = jt.queryForObject(sql, Integer.class, objectList.toArray());

MapperContext context = new MapperContext();
context.put("datum_id", datumIds);
context.put("isIn", true);
context.put("data_id", dataId);
context.put("group_id", group);
context.put("tenant_id", tenantTmp);

MapperResult mapperResult = configInfoAggrMapper.aggrConfigInfoCount(context);
String sql = mapperResult.getSql();
Object[] args = mapperResult.getParamList().toArray();
Integer result = jt.queryForObject(sql, Integer.class, args);
if (result == null) {
throw new IllegalArgumentException("aggrConfigInfoCount error");
}
Expand Down Expand Up @@ -313,10 +328,18 @@ public List<ConfigInfoAggr> findConfigInfoAggr(String dataId, String group, Stri
String tenantTmp = StringUtils.isBlank(tenant) ? StringUtils.EMPTY : tenant;
ConfigInfoAggrMapper configInfoAggrMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(),
TableConstant.CONFIG_INFO_AGGR);
String sql = configInfoAggrMapper.findConfigInfoAggrIsOrdered();

MapperContext context = new MapperContext();
context.put("data_id", dataId);
context.put("group_id", group);
context.put("tenant_id", tenantTmp);

MapperResult mapperResult = configInfoAggrMapper.findConfigInfoAggrIsOrdered(context);
String sql = mapperResult.getSql();
Object[] args = mapperResult.getParamList().toArray();

try {
return this.jt.query(sql, new Object[] {dataId, group, tenantTmp}, CONFIG_INFO_AGGR_ROW_MAPPER);
return this.jt.query(sql, args, CONFIG_INFO_AGGR_ROW_MAPPER);
} catch (CannotGetJdbcConnectionException e) {
LogUtil.FATAL_LOG.error("[db-error] " + e, e);
throw e;
Expand All @@ -337,11 +360,22 @@ public Page<ConfigInfoAggr> findConfigInfoAggrByPage(String dataId, String group
final int startRow = (pageNo - 1) * pageSize;
String sqlCountRows = configInfoAggrMapper.select(Arrays.asList("count(*)"),
Arrays.asList("data_id", "group_id", "tenant_id"));
String sqlFetchRows = configInfoAggrMapper.findConfigInfoAggrByPageFetchRows(startRow, pageSize);

MapperContext context = new MapperContext();
context.put("data_id", dataId);
context.put("group_id", group);
context.put("tenant_id", tenantTmp);
context.put("startRow", startRow);
context.put("pageSize", pageSize);

MapperResult mapperResult = configInfoAggrMapper.findConfigInfoAggrByPageFetchRows(context);
String sqlFetchRows = mapperResult.getSql();
Object[] sqlFetchArgs = mapperResult.getParamList().toArray();

PaginationHelper<ConfigInfoAggr> helper = this.createPaginationHelper();
try {
return helper.fetchPageLimit(sqlCountRows, new Object[] {dataId, group, tenantTmp}, sqlFetchRows,
new Object[] {dataId, group, tenantTmp}, pageNo, pageSize, CONFIG_INFO_AGGR_ROW_MAPPER);
sqlFetchArgs, pageNo, pageSize, CONFIG_INFO_AGGR_ROW_MAPPER);

} catch (CannotGetJdbcConnectionException e) {
LogUtil.FATAL_LOG.error("[db-error] " + e, e);
Expand Down
Loading

0 comments on commit 1ff7a3f

Please sign in to comment.