package com.github.ltsopensource.admin.access.mysql;
import com.github.ltsopensource.admin.access.RshHandler;
import com.github.ltsopensource.admin.access.domain.NodeOnOfflineLog;
import com.github.ltsopensource.admin.access.face.BackendNodeOnOfflineLogAccess;
import com.github.ltsopensource.admin.request.NodeOnOfflineLogPaginationReq;
import com.github.ltsopensource.core.cluster.Config;
import com.github.ltsopensource.monitor.access.mysql.MysqlAbstractJdbcAccess;
import com.github.ltsopensource.store.jdbc.builder.*;
import java.util.List;
/**
* @author Robert HG (254963746@qq.com) on 3/9/16.
*/
public class MysqlBackendNodeOnOfflineLogAccess extends MysqlAbstractJdbcAccess implements BackendNodeOnOfflineLogAccess {
public MysqlBackendNodeOnOfflineLogAccess(Config config) {
super(config);
}
@Override
protected String getTableName() {
return "lts_admin_node_onoffline_log";
}
@Override
public void insert(List<NodeOnOfflineLog> nodeOnOfflineLogs) {
InsertSql insertSql = new InsertSql(getSqlTemplate())
.insert(getTableName())
.columns("log_time",
"event",
"node_type",
"cluster_name",
"ip",
"port",
"host_name",
"group",
"create_time",
"threads",
"identity",
"http_cmd_port");
for (NodeOnOfflineLog nodeOnOfflineLog : nodeOnOfflineLogs) {
insertSql.values(nodeOnOfflineLog.getLogTime(),
nodeOnOfflineLog.getEvent(),
nodeOnOfflineLog.getNodeType().name(),
nodeOnOfflineLog.getClusterName(),
nodeOnOfflineLog.getIp(),
nodeOnOfflineLog.getPort(),
nodeOnOfflineLog.getHostName(),
nodeOnOfflineLog.getGroup(),
nodeOnOfflineLog.getCreateTime(),
nodeOnOfflineLog.getThreads(),
nodeOnOfflineLog.getIdentity(),
nodeOnOfflineLog.getHttpCmdPort()
);
}
insertSql.doBatchInsert();
}
@Override
public List<NodeOnOfflineLog> select(NodeOnOfflineLogPaginationReq request) {
return new SelectSql(getSqlTemplate())
.select()
.all()
.from()
.table(getTableName())
.whereSql(buildWhereSql(request))
.orderBy()
.column("log_time", OrderByType.DESC)
.limit(request.getStart(), request.getLimit())
.list(RshHandler.NODE_ON_OFFLINE_LOG_LIST_RSH);
}
@Override
public Long count(NodeOnOfflineLogPaginationReq request) {
return new SelectSql(getSqlTemplate())
.select()
.columns("count(1)")
.from()
.table(getTableName())
.whereSql(buildWhereSql(request))
.single();
}
@Override
public void delete(NodeOnOfflineLogPaginationReq request) {
new DeleteSql(getSqlTemplate())
.delete()
.from()
.table(getTableName())
.whereSql(buildWhereSql(request))
.doDelete();
}
private WhereSql buildWhereSql(NodeOnOfflineLogPaginationReq request){
return new WhereSql()
.andOnNotEmpty("identity = ?", request.getIdentity())
.andOnNotEmpty("group = ?", request.getGroup())
.andOnNotEmpty("event = ?", request.getEvent())
.andBetween("log_time", request.getStartLogTime(), request.getEndLogTime());
}
}