에이전트 정보 수신 진행중

main
semin.baek 5 months ago
parent ecdb0e05af
commit 9bf05da49a

@ -29,26 +29,45 @@ COMMENT ON COLUMN TB_DFX_USER.USER_REGISTER_TIME IS '가입일시';
COMMENT ON COLUMN TB_DFX_USER.LAST_LOGIN_TIME IS '마지막 로그인 일시'; COMMENT ON COLUMN TB_DFX_USER.LAST_LOGIN_TIME IS '마지막 로그인 일시';
CREATE UNIQUE INDEX IX_DFX_USER_01 ON TB_DFX_USER(USER_EMAIL); CREATE UNIQUE INDEX IX_DFX_USER_01 ON TB_DFX_USER(USER_EMAIL);
CREATE TABLE TB_DFX_AGENT_CONFIG (
CREATE TABLE TB_DFX_AGENT_INFO (
AGENT_ID VARCHAR(256) NOT NULL AGENT_ID VARCHAR(256) NOT NULL
, HOST_NAME VARCHAR(256) , HOST_NAME VARCHAR(256) NOT NULL
, LISTEN_PORT DECIMAL(5) NOT NULL , LISTEN_PORT DECIMAL(5) NOT NULL
, DESCRIPTION VARCHAR(2048) , DESCRIPTION VARCHAR(2048)
, POSTMAN_COUNT DECIMAL(9) , POSTMAN_COUNT DECIMAL(9)
, DROPBOX_COUNT DECIMAL(9) , DROPBOX_COUNT DECIMAL(9)
, STATUS_CODE VARCHAR(64) NOT NULL , STATUS_CODE VARCHAR(64) NOT NULL
, LAST_STATUS_TS TIMESTAMP NOT NULL , LAST_STATUS_TS TIMESTAMP NOT NULL
, SETTINGS_DATA CLOB , SETTINGS_DATA TEXT
, CONSTRAINT PK_DFX_AGENT_CONFIG PRIMARY KEY (AGENT_ID) , CONSTRAINT PK_DFX_AGENT_CONFIG PRIMARY KEY (AGENT_ID)
); );
COMMENT ON TABLE TB_DFX_AGENT_CONFIG IS '에이전트 설정'; COMMENT ON TABLE TB_DFX_AGENT_INFO IS '에이전트 설정';
COMMENT ON COLUMN TB_DFX_AGENT_CONFIG.AGENT_ID IS '에이전트ID'; COMMENT ON COLUMN TB_DFX_AGENT_INFO.AGENT_ID IS '에이전트ID';
COMMENT ON COLUMN TB_DFX_AGENT_CONFIG.HOST_NAME IS '에이전트가 설치된 HOSTNAME 또는 IP'; COMMENT ON COLUMN TB_DFX_AGENT_INFO.HOST_NAME IS '에이전트가 설치된 HOSTNAME 또는 IP';
COMMENT ON COLUMN TB_DFX_AGENT_CONFIG.LISTEN_PORT IS '에이전트 수신 포트'; COMMENT ON COLUMN TB_DFX_AGENT_INFO.LISTEN_PORT IS '에이전트 수신 포트';
COMMENT ON COLUMN TB_DFX_AGENT_CONFIG.DESCRIPTION IS '에이전트 설명'; COMMENT ON COLUMN TB_DFX_AGENT_INFO.DESCRIPTION IS '에이전트 설명';
COMMENT ON COLUMN TB_DFX_AGENT_CONFIG.POSTMAN_COUNT IS 'POSTMAN 갯수'; COMMENT ON COLUMN TB_DFX_AGENT_INFO.POSTMAN_COUNT IS 'POSTMAN 갯수';
COMMENT ON COLUMN TB_DFX_AGENT_CONFIG.DROPBOX_COUNT IS 'DROPBOX 갯수'; COMMENT ON COLUMN TB_DFX_AGENT_INFO.DROPBOX_COUNT IS 'DROPBOX 갯수';
COMMENT ON COLUMN TB_DFX_AGENT_CONFIG.STATUS_CODE IS '상태코드 CODE_GROUP: AGENT_STATUS_CODE'; COMMENT ON COLUMN TB_DFX_AGENT_INFO.STATUS_CODE IS '상태코드 CODE_GROUP: AGENT_STATUS_CODE';
COMMENT ON COLUMN TB_DFX_AGENT_CONFIG.LAST_STATUS_TS IS '최종상태확인 시간'; COMMENT ON COLUMN TB_DFX_AGENT_INFO.LAST_STATUS_TS IS '최종상태확인 시간';
COMMENT ON COLUMN TB_DFX_AGENT_CONFIG.SETTINGS_DATA IS '에이전스 설정 파일 내용'; COMMENT ON COLUMN TB_DFX_AGENT_INFO.SETTINGS_DATA IS '에이전스 설정 파일 내용';
CREATE TABLE TB_DFX_DROPBOX (
AGENT_ID VARCHAR(256) NOT NULL
, DROPBOX_ID VARCHAR(256) NOT NULL
, TASK_TYPE VARCHAR(64) NOT NULL
, DATA_SOURCE_ID VARCHAR(256)
, SQL_ID VARCHAR(256)
, DESCRIPTION VARCHAR(2048)
, CONSTRAINT PK_DFX_DROPBOX PRIMARY KEY (AGENT_ID, DROPBOX_ID)
);
COMMENT ON TABLE TB_DFX_DROPBOX IS 'DROPBOX 설정';
COMMENT ON COLUMN TB_DFX_DROPBOX.AGENT_ID IS '에이전트ID';
COMMENT ON COLUMN TB_DFX_DROPBOX.DROPBOX_ID IS 'DROPBOX ID';
COMMENT ON COLUMN TB_DFX_DROPBOX.TASK_TYPE IS 'CODE DROPBOX_TASK_TYPE';
COMMENT ON COLUMN TB_DFX_DROPBOX.DATA_SOURCE_ID IS 'DATA SOURCE ID';
COMMENT ON COLUMN TB_DFX_DROPBOX.SQL_ID IS 'SQL_ID';
COMMENT ON COLUMN TB_DFX_DROPBOX.DESCRIPTION IS 'DESCRIPTION';

@ -11,4 +11,17 @@ VALUES (
'AGENT_STATUS_CODE', 'STATUS_UNKNOWN', '확인불가', '확인불가', 2, NULL, 'Y' 'AGENT_STATUS_CODE', 'STATUS_UNKNOWN', '확인불가', '확인불가', 2, NULL, 'Y'
); );
INSERT INTO TB_CODE (
CODE_GROUP, CODE_NAME, CODE_VALUE, CODE_DESCRIPTION, ORDER_NO, PARENT_CODE_NAME, USE_YN
)
VALUES (
'DROPBOX_TASK_TYPE', 'RECEIVE_DB_TO_DB_SAVE', '메시지 수신 후 DB 저장', '메시지를 수신하여 DB에 저장한다.', 1, NULL, 'Y'
);
INSERT INTO TB_CODE (
CODE_GROUP, CODE_NAME, CODE_VALUE, CODE_DESCRIPTION, ORDER_NO, PARENT_CODE_NAME, USE_YN
)
VALUES (
'DROPBOX_TASK_TYPE', 'RECEIVE_FILE', '파일 수신 후 파일 저장', '파일을 수신하여 파일로 저장한다.', 2, NULL, 'Y'
);
INSERT INTO TB_DFX_USER (USER_UUID, USER_EMAIL, USER_PASSWORD, USER_NICK) VALUES ('dad9f3b6-45bf-49f9-85c5-1a83810d921c', 'smbaek@bsm-lab.com', 'qortpals1!', '백세민'); INSERT INTO TB_DFX_USER (USER_UUID, USER_EMAIL, USER_PASSWORD, USER_NICK) VALUES ('dad9f3b6-45bf-49f9-85c5-1a83810d921c', 'smbaek@bsm-lab.com', 'qortpals1!', '백세민');

@ -9,6 +9,7 @@ import java.util.Map;
public class AgentConfigDto { public class AgentConfigDto {
private String description; private String description;
private String myHostId; private String myHostId;
private String myHostName;
private int myListenPort; private int myListenPort;
private List<KnownAgent> knownAgentList; private List<KnownAgent> knownAgentList;
private StatusChecker statusChecker; private StatusChecker statusChecker;
@ -26,11 +27,15 @@ public class AgentConfigDto {
private String hostName; private String hostName;
private int listenPort; private int listenPort;
private List<String> dropBoxIdList; private List<String> dropBoxIdList;
private List<String> routingHostIdList;
} }
@Data @Data
public static class StatusChecker { public static class StatusChecker {
private String cron; private String cron;
private String consoleHostName;
private int consoleListenPort;
private boolean consoleSslEnabled;
} }
@Data @Data
@ -81,7 +86,6 @@ public class AgentConfigDto {
private PostmanMessage message; private PostmanMessage message;
private String recipientHostId; private String recipientHostId;
private String recipientDropBoxId; private String recipientDropBoxId;
private List<String> routingHostIdList;
private String description; private String description;
} }

@ -10,6 +10,7 @@ import lombok.*;
public class CommandDto { public class CommandDto {
private CommandType commandType; private CommandType commandType;
private String messageUuid; private String messageUuid;
private String data;
public static enum CommandType { public static enum CommandType {
ALIVE, ALIVE,

@ -0,0 +1,48 @@
package com.bsmlab.dfx.dfxconsole.app.agent;
import com.bsmlab.dfx.agent.config.AgentConfigDto;
import com.bsmlab.dfx.dfxconsole.app.agent.service.DfxAgentInfoDto;
import com.bsmlab.dfx.dfxconsole.app.agent.service.DfxAgentInfoService;
import com.bsmlab.dfx.dfxconsole.framework.support.ResponseUtils;
import com.fasterxml.jackson.core.JsonProcessingException;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
import java.util.Map;
@RestController
@RequiredArgsConstructor
@Slf4j
public class DfxAgentInfoController {
private final DfxAgentInfoService dfxAgentInfoService;
@PostMapping("/app-api/agent/getAgentInfoDtoList")
public ResponseEntity<List<DfxAgentInfoDto>> agentConfigDtoList() {
List<DfxAgentInfoDto> dfxAgentInfoDtoList = dfxAgentInfoService.getDfxAgentInfoDtoList();
return ResponseEntity.ok().body(dfxAgentInfoDtoList);
}
@PostMapping("/app-api/agent/getAgentInfoDto")
public ResponseEntity<DfxAgentInfoDto> getAgentInfoDto(@RequestBody Map<String, String> paramMap) {
String agentId = paramMap.get("agentId");
DfxAgentInfoDto dfxAgentInfoDto = dfxAgentInfoService.getDfxAgentInfoDto(agentId);
return ResponseEntity.ok().body(dfxAgentInfoDto);
}
@PostMapping("/app-api/agent/getAgentConfigDto")
public ResponseEntity<?> getAgentConfigDto(@RequestBody Map<String, String> paramMap) {
String agentId = paramMap.get("agentId");
AgentConfigDto agentConfigDto = null;
try {
agentConfigDto = dfxAgentInfoService.getDfxAgentConfigDto(agentId);
return ResponseEntity.ok().body(agentConfigDto);
} catch (JsonProcessingException e) {
return ResponseEntity.internalServerError().body(ResponseUtils.toExceptionResponseDto(e));
}
}
}

@ -0,0 +1,21 @@
package com.bsmlab.dfx.dfxconsole.app.agent.service;
import lombok.*;
@NoArgsConstructor
@AllArgsConstructor
@Getter
@Setter
@ToString
@Builder
public class DfxAgentInfoDto {
private String agentId;
private String hostName;
private int listenPort;
private int postmanCount;
private int dropboxCount;
private String statusCode;
private long lastStatusTs;
private String settingsData;
private String lastStatusTimeString;
}

@ -0,0 +1,17 @@
package com.bsmlab.dfx.dfxconsole.app.agent.service;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
@Mapper
public interface DfxAgentInfoMapper {
List<DfxAgentInfoDto> selectDfxAgentInfoList();
DfxAgentInfoDto selectDfxAgentInfoByAgentId(DfxAgentInfoDto dfxAgentInfoDto);
void insertDfxAgentInfo(DfxAgentInfoDto dfxAgentInfoDto);
int updateDfxAgentInfo(DfxAgentInfoDto dfxAgentInfoDto);
List<DfxDropboxDto> selectDfxDropboxList();
DfxDropboxDto selectDfxDropboxByAgentIdAndDropBoxId(DfxDropboxDto dfxDropboxDto);
void insertDfxDropbox(DfxDropboxDto dfxDropboxDto);
int deleteDfxDropboxByAgentIdAndDropboxId(DfxDropboxDto dfxDropboxDto);
}

@ -0,0 +1,49 @@
package com.bsmlab.dfx.dfxconsole.app.agent.service;
import com.bsmlab.dfx.agent.config.AgentConfigDto;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import java.util.List;
@Slf4j
@RequiredArgsConstructor
@Service
public class DfxAgentInfoService {
private final DfxAgentInfoMapper dfxAgentInfoMapper;
public List<DfxAgentInfoDto> getDfxAgentInfoDtoList() {
List<DfxAgentInfoDto> dfxAgentInfoDtoList = null;
dfxAgentInfoDtoList = dfxAgentInfoMapper.selectDfxAgentInfoList();
return dfxAgentInfoDtoList;
}
public DfxAgentInfoDto getDfxAgentInfoDto(String agentId) {
DfxAgentInfoDto dfxAgentInfoDto = null;
dfxAgentInfoDto = dfxAgentInfoMapper.selectDfxAgentInfoByAgentId(DfxAgentInfoDto.builder().agentId(agentId).build());
return dfxAgentInfoDto;
}
public void saveDfxAgentInfoDto(DfxAgentInfoDto dfxAgentInfoDto) {
DfxAgentInfoDto existedDfxAgentInfoDto = dfxAgentInfoMapper.selectDfxAgentInfoByAgentId(dfxAgentInfoDto);
if(existedDfxAgentInfoDto != null && StringUtils.isNotEmpty(existedDfxAgentInfoDto.getAgentId())) {
dfxAgentInfoMapper.updateDfxAgentInfo(dfxAgentInfoDto);
}
else {
dfxAgentInfoMapper.insertDfxAgentInfo(dfxAgentInfoDto);
}
}
public AgentConfigDto getDfxAgentConfigDto(String agentId) throws JsonProcessingException {
DfxAgentInfoDto dfxAgentInfoDto = null;
dfxAgentInfoDto = dfxAgentInfoMapper.selectDfxAgentInfoByAgentId(DfxAgentInfoDto.builder().agentId(agentId).build());
ObjectMapper objectMapper = new ObjectMapper();
AgentConfigDto agentConfigDto = objectMapper.readValue(dfxAgentInfoDto.getSettingsData(), new TypeReference<AgentConfigDto>() {});
return agentConfigDto;
}
}

@ -0,0 +1,18 @@
package com.bsmlab.dfx.dfxconsole.app.agent.service;
import lombok.*;
@NoArgsConstructor
@AllArgsConstructor
@Builder
@Getter
@Setter
@ToString
public class DfxDropboxDto {
private String agentId;
private String dropboxId;
private String taskType;
private String dataSourceId;
private String sqlId;
private String description;
}

@ -1,18 +1,27 @@
package com.bsmlab.dfx.dfxconsole.app.communicate.service; package com.bsmlab.dfx.dfxconsole.app.communicate.service;
import com.bsmlab.dfx.agent.config.AgentConfigDto;
import com.bsmlab.dfx.agent.listener.dto.AckDto; import com.bsmlab.dfx.agent.listener.dto.AckDto;
import com.bsmlab.dfx.agent.listener.dto.CommandDto; import com.bsmlab.dfx.agent.listener.dto.CommandDto;
import com.bsmlab.dfx.agent.support.MessageUtils; import com.bsmlab.dfx.agent.support.MessageUtils;
import com.bsmlab.dfx.agent.support.exception.IllegalMessageException; import com.bsmlab.dfx.agent.support.exception.IllegalMessageException;
import com.bsmlab.dfx.agent.support.exception.NullMessageException; import com.bsmlab.dfx.agent.support.exception.NullMessageException;
import com.bsmlab.dfx.dfxconsole.app.agent.service.DfxAgentInfoDto;
import com.bsmlab.dfx.dfxconsole.app.agent.service.DfxAgentInfoService;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@Service @Service
@Slf4j @Slf4j
@RequiredArgsConstructor @RequiredArgsConstructor
public class ListenerService { public class ListenerService {
private final DfxAgentInfoService dfxAgentInfoService;
public AckDto receiveCommand(String messageJsonString) { public AckDto receiveCommand(String messageJsonString) {
AckDto ackDto; AckDto ackDto;
CommandDto commandDto; CommandDto commandDto;
@ -20,13 +29,31 @@ public class ListenerService {
commandDto = MessageUtils.toCommandDto(messageJsonString); commandDto = MessageUtils.toCommandDto(messageJsonString);
String resultText = null; String resultText = null;
if(CommandDto.CommandType.ALIVE == commandDto.getCommandType()) { if(CommandDto.CommandType.ALIVE == commandDto.getCommandType()) {
resultText = "ALIVE"; resultText = CommandDto.CommandType.ALIVE.name();
}
else if(CommandDto.CommandType.INFORMATION == commandDto.getCommandType()) {
this.saveAgentInformation(commandDto);
resultText = CommandDto.CommandType.INFORMATION.name();
} }
ackDto = AckDto.builder().result(AckDto.ResultType.PROCESS_SUCCESS).messageUuid(commandDto.getMessageUuid()).resultText(resultText).build(); ackDto = AckDto.builder().result(AckDto.ResultType.PROCESS_SUCCESS).messageUuid(commandDto.getMessageUuid()).resultText(resultText).build();
} }
catch (IllegalMessageException | NullMessageException e) { catch (IllegalMessageException | NullMessageException | JsonProcessingException e) {
ackDto = AckDto.builder().result(AckDto.ResultType.RECEIVE_FAIL).resultText(e.getLocalizedMessage()).messageUuid("").build(); ackDto = AckDto.builder().result(AckDto.ResultType.RECEIVE_FAIL).resultText(e.getLocalizedMessage()).messageUuid("").build();
} }
return ackDto; return ackDto;
} }
public void saveAgentInformation(CommandDto commandDto) throws JsonProcessingException {
ObjectMapper objectMapper = new ObjectMapper();
AgentConfigDto agentConfigDto = objectMapper.readValue(commandDto.getData(), new TypeReference<AgentConfigDto>(){});
if(agentConfigDto != null && StringUtils.isNotEmpty(agentConfigDto.getMyHostId())) {
DfxAgentInfoDto dfxAgentInfoDto = DfxAgentInfoDto.builder()
.agentId(agentConfigDto.getMyHostId()).hostName(agentConfigDto.getMyHostName()).listenPort(agentConfigDto.getMyListenPort())
.postmanCount(agentConfigDto.getPostmanConfig().getPostmanList().size())
.dropboxCount(agentConfigDto.getDropBoxConfig().getDropBoxList().size())
.settingsData(commandDto.getData()).lastStatusTs(System.currentTimeMillis()).statusCode("STATUS_OK")
.build();
dfxAgentInfoService.saveDfxAgentInfoDto(dfxAgentInfoDto);
}
}
} }

@ -0,0 +1,13 @@
package com.bsmlab.dfx.dfxconsole.framework.dto;
import lombok.*;
@NoArgsConstructor
@AllArgsConstructor
@Builder
@Getter
@Setter
@ToString
public class ExceptionResponseDto {
private String message;
}

@ -0,0 +1,10 @@
package com.bsmlab.dfx.dfxconsole.framework.support;
import com.bsmlab.dfx.dfxconsole.framework.dto.ExceptionResponseDto;
public class ResponseUtils {
public static ExceptionResponseDto toExceptionResponseDto(Exception e) {
ExceptionResponseDto exceptionResponseDto = ExceptionResponseDto.builder().message(e.getMessage()).build();
return exceptionResponseDto;
}
}

@ -37,7 +37,7 @@ server:
include-exception: true include-exception: true
include-message: always include-message: always
include-stacktrace: always include-stacktrace: always
port: 9443 port: 17443
ssl: ssl:
enabled: true enabled: true
certificate: ${user.home}/.vite-plugin-mkcert/bsm-lab.dev.pem certificate: ${user.home}/.vite-plugin-mkcert/bsm-lab.dev.pem

@ -0,0 +1,87 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.bsmlab.dfx.dfxconsole.app.agent.service.DfxAgentInfoMapper">
<select id="selectDfxAgentInfoList" resultType="com.bsmlab.dfx.dfxconsole.app.agent.service.DfxAgentInfoDto">
<![CDATA[
SELECT AGENT_ID, HOST_NAME, LISTEN_PORT, DESCRIPTION, POSTMAN_COUNT, DROPBOX_COUNT, STATUS_CODE, LAST_STATUS_TS, SETTINGS_DATA
, TO_CHAR(LAST_STATUS_TS, 'YYYY-MM-DD HH24:MI:SS') AS LAST_STATUS_TIME_STRING
FROM TB_DFX_AGENT_INFO
ORDER BY HOST_NAME, AGENT_ID
]]>
</select>
<select id="selectDfxAgentInfoByAgentId" parameterType="com.bsmlab.dfx.dfxconsole.app.agent.service.DfxAgentInfoDto" resultType="com.bsmlab.dfx.dfxconsole.app.agent.service.DfxAgentInfoDto">
<![CDATA[
SELECT AGENT_ID, HOST_NAME, LISTEN_PORT, DESCRIPTION, POSTMAN_COUNT, DROPBOX_COUNT, STATUS_CODE, LAST_STATUS_TS, SETTINGS_DATA
, TO_CHAR(LAST_STATUS_TS, 'YYYY-MM-DD HH24:MI:SS') AS LAST_STATUS_TIME_STRING
FROM TB_DFX_AGENT_INFO
WHERE 1 = 1
AND AGENT_ID = #{agentId}
]]>
</select>
<insert id="insertDfxAgentInfo" parameterType="com.bsmlab.dfx.dfxconsole.app.agent.service.DfxAgentInfoDto">
<![CDATA[
INSERT INTO TB_DFX_AGENT_INFO (
AGENT_ID, HOST_NAME, LISTEN_PORT, DESCRIPTION, POSTMAN_COUNT, DROPBOX_COUNT, STATUS_CODE, LAST_STATUS_TS, SETTINGS_DATA
)
VALUES (
#{agentId}, #{hostName}, #{listenPort}, #{description}, #{postmanCount}, #{dropboxCount}, #{statusCode}, #{lastStatusTs}, #{settingsData}
)
]]>
</insert>
<update id="updateDfxAgentInfo" parameterType="com.bsmlab.dfx.dfxconsole.app.agent.service.DfxAgentInfoDto">
<![CDATA[
UPDATE TB_DFX_AGENT_INFO
SET HOST_NAME = #{hostName}
, LISTEN_PORT = #{listenPort}
, DESCRIPTION = #{description}
, POSTMAN_COUNT = #{postmanCount}
, DROPBOX_COUNT = #{dropboxCount}
, STATUS_CODE = #{statusCode}
, LAST_STATUS_TS = #{lastStatusTs}
, SETTINGS_DATA = #{settingsData}
WHERE 1 = 1
AND AGENT_ID = #{agentId}
]]>
</update>
<select id="selectDfxDropboxList" resultType="com.bsmlab.dfx.dfxconsole.app.agent.service.DfxDropboxDto">
<![CDATA[
SELECT AGENT_ID, DROPBOX_ID, TASK_TYPE, DATA_SOURCE_ID, SQL_ID, DESCRIPTION
FROM TB_DFX_DROPBOX
ORDER BY HOST_NAME, AGENT_ID, DROPBOX_ID
]]>
</select>
<select id="selectDfxDropboxByAgentIdAndDropBoxId" resultType="com.bsmlab.dfx.dfxconsole.app.agent.service.DfxDropboxDto">
<![CDATA[
SELECT AGENT_ID, DROPBOX_ID, TASK_TYPE, DATA_SOURCE_ID, SQL_ID, DESCRIPTION
FROM TB_DFX_DROPBOX
WHERE 1 = 1
AND AGENT_ID = #{agentId}
AND DROPBOX_ID = #{dropboxId}
]]>
</select>
<insert id="insertDfxDropbox" parameterType="com.bsmlab.dfx.dfxconsole.app.agent.service.DfxDropboxDto">
<![CDATA[
INSERT INTO TB_DFX_DROPBOX (
AGENT_ID, DROPBOX_ID, TASK_TYPE, DATA_SOURCE_ID, SQL_ID, DESCRIPTION
)
VALUES (
#{agentId}, #{dropboxId}, #{taskType}, #{dataSourceId}, #{sqlId}, #{description}
)
]]>
</insert>
<update id="deleteDfxDropboxByAgentIdAndDropboxId" parameterType="com.bsmlab.dfx.dfxconsole.app.agent.service.DfxDropboxDto">
<![CDATA[
DELETE FROM TB_DFX_DROPBOX
WHERE 1 = 1
AND AGENT_ID = #{agentId} AND DROPBOX_ID = #{dropboxId}
]]>
</update>
</mapper>
Loading…
Cancel
Save