diff --git a/apps/user-service/src/main/java/site/icebang/domain/workflow/controller/WorkflowController.java b/apps/user-service/src/main/java/site/icebang/domain/workflow/controller/WorkflowController.java index 9cd5933b..650a2bcf 100644 --- a/apps/user-service/src/main/java/site/icebang/domain/workflow/controller/WorkflowController.java +++ b/apps/user-service/src/main/java/site/icebang/domain/workflow/controller/WorkflowController.java @@ -10,6 +10,7 @@ import site.icebang.common.dto.PageResult; import site.icebang.domain.workflow.dto.WorkflowCardDto; import site.icebang.domain.workflow.service.WorkflowExecutionService; +import site.icebang.domain.workflow.service.WorkflowHistoryService; import site.icebang.domain.workflow.service.WorkflowService; @RestController @@ -18,6 +19,7 @@ public class WorkflowController { private final WorkflowService workflowService; private final WorkflowExecutionService workflowExecutionService; + private final WorkflowHistoryService workflowHistoryService; @GetMapping("") public ApiResponse> getWorkflowList( diff --git a/apps/user-service/src/main/java/site/icebang/domain/workflow/controller/WorkflowHistoryController.java b/apps/user-service/src/main/java/site/icebang/domain/workflow/controller/WorkflowHistoryController.java index 8ca79726..07d4f20e 100644 --- a/apps/user-service/src/main/java/site/icebang/domain/workflow/controller/WorkflowHistoryController.java +++ b/apps/user-service/src/main/java/site/icebang/domain/workflow/controller/WorkflowHistoryController.java @@ -1,13 +1,13 @@ package site.icebang.domain.workflow.controller; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import lombok.RequiredArgsConstructor; import site.icebang.common.dto.ApiResponse; +import site.icebang.common.dto.PageParams; +import site.icebang.common.dto.PageResult; +import site.icebang.domain.workflow.dto.WorkflowHistoryDTO; import site.icebang.domain.workflow.dto.WorkflowRunDetailResponse; import site.icebang.domain.workflow.service.WorkflowHistoryService; @@ -17,6 +17,13 @@ public class WorkflowHistoryController { private final WorkflowHistoryService workflowHistoryService; + @GetMapping("") + public ApiResponse> getWorkflowHistoryList( + @ModelAttribute PageParams pageParams) { + PageResult response = workflowHistoryService.getPagedResult(pageParams); + return ApiResponse.success(response); + } + /** * 워크플로우 실행 상세 조회 * diff --git a/apps/user-service/src/main/java/site/icebang/domain/workflow/dto/WorkflowHistoryDTO.java b/apps/user-service/src/main/java/site/icebang/domain/workflow/dto/WorkflowHistoryDTO.java new file mode 100644 index 00000000..18a25b7e --- /dev/null +++ b/apps/user-service/src/main/java/site/icebang/domain/workflow/dto/WorkflowHistoryDTO.java @@ -0,0 +1,20 @@ +package site.icebang.domain.workflow.dto; + +import java.math.BigInteger; +import java.time.LocalDateTime; + +import lombok.Data; + +@Data +public class WorkflowHistoryDTO { + + private BigInteger id; + private BigInteger workflowId; + private String traceId; + private LocalDateTime startedAt; + private LocalDateTime finishedAt; + private BigInteger createdBy; + private String triggerType; + private String runNumber; + private String status; +} diff --git a/apps/user-service/src/main/java/site/icebang/domain/workflow/mapper/WorkflowHistoryMapper.java b/apps/user-service/src/main/java/site/icebang/domain/workflow/mapper/WorkflowHistoryMapper.java index 6833a6d7..d22e2a68 100644 --- a/apps/user-service/src/main/java/site/icebang/domain/workflow/mapper/WorkflowHistoryMapper.java +++ b/apps/user-service/src/main/java/site/icebang/domain/workflow/mapper/WorkflowHistoryMapper.java @@ -4,8 +4,10 @@ import org.apache.ibatis.annotations.Mapper; +import site.icebang.common.dto.PageParams; import site.icebang.domain.workflow.dto.JobRunDto; import site.icebang.domain.workflow.dto.TaskRunDto; +import site.icebang.domain.workflow.dto.WorkflowHistoryDTO; import site.icebang.domain.workflow.dto.WorkflowRunDto; @Mapper @@ -41,4 +43,20 @@ public interface WorkflowHistoryMapper { * @return String traceId */ String selectTraceIdByRunId(Long runId); + + /** + * 워크플로우 런 페이지네이션 + * + * @param pageParams pageParams + * @return List + */ + List selectWorkflowHistoryList(PageParams pageParams); + + /** + * 워크플로우 런 인스턴스 개수 조회 + * + * @param pageParams pageParams + * @return 결과 개수 + */ + int selectWorkflowHistoryCount(PageParams pageParams); } diff --git a/apps/user-service/src/main/java/site/icebang/domain/workflow/service/WorkflowHistoryService.java b/apps/user-service/src/main/java/site/icebang/domain/workflow/service/WorkflowHistoryService.java index 583e2b20..d04e238f 100644 --- a/apps/user-service/src/main/java/site/icebang/domain/workflow/service/WorkflowHistoryService.java +++ b/apps/user-service/src/main/java/site/icebang/domain/workflow/service/WorkflowHistoryService.java @@ -7,14 +7,33 @@ import lombok.RequiredArgsConstructor; +import site.icebang.common.dto.PageParams; +import site.icebang.common.dto.PageResult; +import site.icebang.common.service.PageableService; import site.icebang.domain.workflow.dto.*; import site.icebang.domain.workflow.mapper.WorkflowHistoryMapper; @Service @RequiredArgsConstructor -public class WorkflowHistoryService { +public class WorkflowHistoryService implements PageableService { private final WorkflowHistoryMapper workflowHistoryMapper; + /** + * 워크플로우 런 조회 + * + * @param pageParams pageParams + * @return PageResult + */ + @Override + @Transactional(readOnly = true) + public PageResult getPagedResult(PageParams pageParams) { + + return PageResult.from( + pageParams, + () -> workflowHistoryMapper.selectWorkflowHistoryList(pageParams), + () -> workflowHistoryMapper.selectWorkflowHistoryCount(pageParams)); + } + /** * 워크플로우 실행 상세 조회 * diff --git a/apps/user-service/src/main/resources/mybatis/mapper/WorkflowMapper.xml b/apps/user-service/src/main/resources/mybatis/mapper/WorkflowMapper.xml index dacade96..5968c395 100644 --- a/apps/user-service/src/main/resources/mybatis/mapper/WorkflowMapper.xml +++ b/apps/user-service/src/main/resources/mybatis/mapper/WorkflowMapper.xml @@ -39,4 +39,31 @@ LEFT JOIN user u ON w.created_by = u.id WHERE w.id = #{id} + + + + + \ No newline at end of file