diff --git a/src/main/java/kr/re/etri/autoflow/controllers/AuthController.java b/src/main/java/kr/re/etri/autoflow/controllers/AuthController.java index 0703fef..d4d9433 100644 --- a/src/main/java/kr/re/etri/autoflow/controllers/AuthController.java +++ b/src/main/java/kr/re/etri/autoflow/controllers/AuthController.java @@ -38,7 +38,7 @@ import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.responses.ApiResponses; -@Tag(name = "Authentication", description = "User Authentication APIs") +@Tag(name = "권한", description = "유저 권한 API") @CrossOrigin(origins = "*", maxAge = 3600) @RestController @RequestMapping("/api/auth") diff --git a/src/main/java/kr/re/etri/autoflow/controllers/DataGroupController.java b/src/main/java/kr/re/etri/autoflow/controllers/DataGroupController.java index 0b173db..49ab902 100644 --- a/src/main/java/kr/re/etri/autoflow/controllers/DataGroupController.java +++ b/src/main/java/kr/re/etri/autoflow/controllers/DataGroupController.java @@ -5,10 +5,9 @@ import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.enums.ParameterIn; import io.swagger.v3.oas.annotations.tags.Tag; import kr.re.etri.autoflow.entity.DataGroupEntity; -import kr.re.etri.autoflow.payload.request.BaseSearchRequest; +import kr.re.etri.autoflow.payload.request.ProjectBaseSearchRequest; import kr.re.etri.autoflow.payload.request.ProjectRequest; import kr.re.etri.autoflow.service.DataGroupService; -import kr.re.etri.autoflow.service.ProjectService; import lombok.RequiredArgsConstructor; import org.springdoc.core.annotations.ParameterObject; import org.springframework.data.domain.Page; @@ -17,7 +16,7 @@ import org.springframework.web.bind.annotation.*; import java.util.List; -@Tag(name = "데이터 그룹", description = "Project CRUD 기능 제공") +@Tag(name = "데이터 그룹", description = "데이터 그룹 CRUD 기능 제공") @CrossOrigin(origins = "*", maxAge = 3600) @RestController @RequestMapping("/api/datagroup") @@ -26,16 +25,16 @@ public class DataGroupController { private final DataGroupService dataGroupService; - @Operation(summary = "전체 프로젝트 목록 조회") + @Operation(summary = "전체 데이터 그룹 목록 조회") @GetMapping public ResponseEntity> getAllProjects() { return ResponseEntity.ok(dataGroupService.findAll()); } - @Operation(summary = "ID로 프로젝트 조회") + @Operation(summary = "ID로 데이터 그룹 조회") @GetMapping("/{id}") public ResponseEntity getProjectById( - @Parameter(description = "조회할 프로젝트 ID", required = true, in = ParameterIn.PATH) + @Parameter(description = "조회할 데이터 그룹 ID", required = true, in = ParameterIn.PATH) @PathVariable("id") Long id) { return dataGroupService.findById(id) @@ -43,15 +42,15 @@ public class DataGroupController { .orElse(ResponseEntity.notFound().build()); } - @Operation(summary = "검색 및 페이지네이션 프로젝트 목록 조회") + @Operation(summary = "검색 및 페이지네이션 데이터 그룹 목록 조회") @GetMapping("/search") public ResponseEntity> searchProjects( - @ParameterObject @ModelAttribute BaseSearchRequest request) { + @ParameterObject @ModelAttribute ProjectBaseSearchRequest request) { Page page = dataGroupService.search(request); return ResponseEntity.ok(page); } - @Operation(summary = "프로젝트 생성") + @Operation(summary = "데이터 그룹 생성") @PostMapping public ResponseEntity createProject(@RequestBody DataGroupEntity project) { try { @@ -62,10 +61,10 @@ public class DataGroupController { } } - @Operation(summary = "프로젝트 수정") + @Operation(summary = "데이터 그룹 수정") @PutMapping("/{id}") public ResponseEntity updateProject( - @Parameter(description = "수정할 프로젝트 ID", required = true, in = ParameterIn.PATH) + @Parameter(description = "수정할 데이터 그룹 ID", required = true, in = ParameterIn.PATH) @PathVariable("id") Long id, @RequestBody ProjectRequest dto) { @@ -74,10 +73,10 @@ public class DataGroupController { .orElse(ResponseEntity.notFound().build()); } - @Operation(summary = "프로젝트 삭제") + @Operation(summary = "데이터 그룹 삭제") @DeleteMapping("/{id}") public ResponseEntity deleteProject( - @Parameter(description = "삭제할 프로젝트 ID", required = true, in = ParameterIn.PATH) + @Parameter(description = "삭제할 데이터 그룹 ID", required = true, in = ParameterIn.PATH) @PathVariable("id") Long id) { if (dataGroupService.delete(id)) { return ResponseEntity.noContent().build(); diff --git a/src/main/java/kr/re/etri/autoflow/controllers/MinIOController.java b/src/main/java/kr/re/etri/autoflow/controllers/MinIOController.java index f3782cd..0bde85d 100644 --- a/src/main/java/kr/re/etri/autoflow/controllers/MinIOController.java +++ b/src/main/java/kr/re/etri/autoflow/controllers/MinIOController.java @@ -25,7 +25,7 @@ import java.util.*; @RequestMapping("/api/minio") @RequiredArgsConstructor @Slf4j -@Tag(name = "MinIO Controller", description = "MinIO 버킷/파일 관리 API") +@Tag(name = "MinIO 업로드 관련", description = "MinIO 버킷/파일 관리 API") public class MinIOController { private final MinioClient minioClient; private final DatasetAttachmentRepository datasetAttachmentRepository; diff --git a/src/main/java/kr/re/etri/autoflow/controllers/WorkFlowController.java b/src/main/java/kr/re/etri/autoflow/controllers/WorkFlowController.java index d605819..5a296e3 100644 --- a/src/main/java/kr/re/etri/autoflow/controllers/WorkFlowController.java +++ b/src/main/java/kr/re/etri/autoflow/controllers/WorkFlowController.java @@ -4,7 +4,7 @@ import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.tags.Tag; import kr.re.etri.autoflow.entity.WorkflowEntity; -import kr.re.etri.autoflow.payload.request.WorkFlowRequest; +import kr.re.etri.autoflow.payload.request.ProjectBaseSearchRequest; import kr.re.etri.autoflow.service.WorkFlowService; import lombok.RequiredArgsConstructor; import org.springdoc.core.annotations.ParameterObject; @@ -41,7 +41,7 @@ public class WorkFlowController { @Operation(summary = "워크플로우 검색 및 페이지네이션 프로젝트 목록 조회") @GetMapping("/search") public ResponseEntity> searchProjects( - @ParameterObject @ModelAttribute WorkFlowRequest request) { + @ParameterObject @ModelAttribute ProjectBaseSearchRequest request) { Page page = workflowService.search(request); return ResponseEntity.ok(page); } diff --git a/src/main/java/kr/re/etri/autoflow/entity/DataGroupEntity.java b/src/main/java/kr/re/etri/autoflow/entity/DataGroupEntity.java index 3192608..759042d 100644 --- a/src/main/java/kr/re/etri/autoflow/entity/DataGroupEntity.java +++ b/src/main/java/kr/re/etri/autoflow/entity/DataGroupEntity.java @@ -66,6 +66,10 @@ public class DataGroupEntity { @Comment("수정 유저 이름") private String modUserNm; + @Schema(description = "프로젝트 아이디", example = "1", defaultValue = "0") + @Column(nullable = false) + private Long projectId; + @OneToMany @JoinColumn(name = "refId", referencedColumnName = "id", insertable = false, updatable = false) private List files = new ArrayList<>(); diff --git a/src/main/java/kr/re/etri/autoflow/payload/request/WorkFlowRequest.java b/src/main/java/kr/re/etri/autoflow/payload/request/ProjectBaseSearchRequest.java similarity index 79% rename from src/main/java/kr/re/etri/autoflow/payload/request/WorkFlowRequest.java rename to src/main/java/kr/re/etri/autoflow/payload/request/ProjectBaseSearchRequest.java index c08247a..3e947c7 100644 --- a/src/main/java/kr/re/etri/autoflow/payload/request/WorkFlowRequest.java +++ b/src/main/java/kr/re/etri/autoflow/payload/request/ProjectBaseSearchRequest.java @@ -6,7 +6,7 @@ import lombok.Setter; @Getter @Setter -public class WorkFlowRequest extends BaseSearchRequest { +public class ProjectBaseSearchRequest extends BaseSearchRequest { @Schema(description = "프로젝트 ID", example = "1") private Long projectId; } diff --git a/src/main/java/kr/re/etri/autoflow/service/DataGroupService.java b/src/main/java/kr/re/etri/autoflow/service/DataGroupService.java index 433bc40..e204ac7 100644 --- a/src/main/java/kr/re/etri/autoflow/service/DataGroupService.java +++ b/src/main/java/kr/re/etri/autoflow/service/DataGroupService.java @@ -1,14 +1,10 @@ package kr.re.etri.autoflow.service; import kr.re.etri.autoflow.entity.DataGroupEntity; -import kr.re.etri.autoflow.payload.request.BaseSearchRequest; +import kr.re.etri.autoflow.payload.request.ProjectBaseSearchRequest; import kr.re.etri.autoflow.payload.request.ProjectRequest; import kr.re.etri.autoflow.repository.DataGroupRepository; -import kr.re.etri.autoflow.repository.ProjectRepository; -import kr.re.etri.autoflow.repository.UserProjectMapRepository; -import kr.re.etri.autoflow.repository.UserRepository; import kr.re.etri.autoflow.specification.DataGroupSpecification; -import kr.re.etri.autoflow.specification.ProjectSpecification; import lombok.RequiredArgsConstructor; import org.springframework.beans.BeanUtils; import org.springframework.data.domain.Page; @@ -44,7 +40,7 @@ public class DataGroupService { return dataGroupRepository.findById(id); } - public Page search(BaseSearchRequest request) { + public Page search(ProjectBaseSearchRequest request) { int pageIndex = request.getPage() > 0 ? request.getPage() - 1 : 0; Pageable pageable = PageRequest.of( @@ -63,9 +59,17 @@ public class DataGroupService { endDate ); + + if (request.getProjectId() != null) { + spec = spec.and((root, query, cb) -> + cb.equal(root.get("projectId"), request.getProjectId()) + ); + } + return dataGroupRepository.findAll(spec, pageable); } + private LocalDate parseDate(String dateStr) { if (dateStr == null || dateStr.isBlank()) return null; try { 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 ed8901b..3e73d7a 100644 --- a/src/main/java/kr/re/etri/autoflow/service/WorkFlowService.java +++ b/src/main/java/kr/re/etri/autoflow/service/WorkFlowService.java @@ -3,7 +3,7 @@ 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; +import kr.re.etri.autoflow.payload.request.ProjectBaseSearchRequest; import kr.re.etri.autoflow.repository.WorkflowRepository; import kr.re.etri.autoflow.specification.WorkflowSpecification; import lombok.RequiredArgsConstructor; @@ -58,7 +58,7 @@ public class WorkFlowService { } @Transactional - public Page search(WorkFlowRequest request) { + public Page search(ProjectBaseSearchRequest request) { int pageIndex = request.getPage() > 0 ? request.getPage() - 1 : 0; Pageable pageable = PageRequest.of(