diff --git a/src/main/java/kr/re/etri/autoflow/entity/WorkflowEntity.java b/src/main/java/kr/re/etri/autoflow/entity/WorkflowEntity.java index 2a798cf..8585bdd 100644 --- a/src/main/java/kr/re/etri/autoflow/entity/WorkflowEntity.java +++ b/src/main/java/kr/re/etri/autoflow/entity/WorkflowEntity.java @@ -42,7 +42,7 @@ public class WorkflowEntity { private LocalDateTime modDt; @Schema(description = "워크플로우 버전", example = "1.0") - private String version; + private Integer version; @Schema(description = "스텝 개수", example = "5") private Integer stepCount; diff --git a/src/main/java/kr/re/etri/autoflow/repository/WorkflowRepository.java b/src/main/java/kr/re/etri/autoflow/repository/WorkflowRepository.java index efbb29e..49fc736 100644 --- a/src/main/java/kr/re/etri/autoflow/repository/WorkflowRepository.java +++ b/src/main/java/kr/re/etri/autoflow/repository/WorkflowRepository.java @@ -5,4 +5,5 @@ import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaSpecificationExecutor; public interface WorkflowRepository extends JpaRepository, JpaSpecificationExecutor { + Integer findVersionById(Long id); } diff --git a/src/main/java/kr/re/etri/autoflow/service/WorkFlowService.java b/src/main/java/kr/re/etri/autoflow/service/WorkFlowService.java index 0065c49..82dab80 100644 --- a/src/main/java/kr/re/etri/autoflow/service/WorkFlowService.java +++ b/src/main/java/kr/re/etri/autoflow/service/WorkFlowService.java @@ -1,5 +1,6 @@ package kr.re.etri.autoflow.service; +import jakarta.transaction.Transactional; import kr.re.etri.autoflow.entity.WorkflowEntity; import kr.re.etri.autoflow.payload.request.BaseSearchRequest; import kr.re.etri.autoflow.payload.request.WorkFlowRequest; @@ -32,10 +33,20 @@ public class WorkFlowService { return workflowRepository.findById(id); } - public WorkflowEntity save(WorkflowEntity entity) { - return workflowRepository.save(entity); + @Transactional + public WorkflowEntity save(WorkflowEntity workflow) { + if (workflow.getId() == null) { + // 신규 생성 + workflow.setVersion(1); + } else { + // 업데이트 시 기존 max 버전 + 1 + Integer maxVersion = workflowRepository.findVersionById(workflow.getId()); + workflow.setVersion(maxVersion != null ? maxVersion + 1 : 1); + } + return workflowRepository.save(workflow); } + @Transactional public boolean deleteById(Long id) { if (workflowRepository.existsById(id)) { workflowRepository.deleteById(id); @@ -44,6 +55,7 @@ public class WorkFlowService { return false; } + @Transactional public Page search(WorkFlowRequest request) { int pageIndex = request.getPage() > 0 ? request.getPage() - 1 : 0; @@ -67,5 +79,4 @@ public class WorkFlowService { return workflowRepository.findAll(spec, pageable); } - }