diff --git a/src/main/java/com/going/server/domain/graph/controller/graphController.java b/src/main/java/com/going/server/domain/graph/controller/graphController.java index bc8bd5d..8706f36 100644 --- a/src/main/java/com/going/server/domain/graph/controller/graphController.java +++ b/src/main/java/com/going/server/domain/graph/controller/graphController.java @@ -2,6 +2,8 @@ import com.going.server.domain.graph.dto.graphDto; import com.going.server.domain.graph.dto.graphListDto; +import com.going.server.domain.graph.dto.knowledgeGraphDto; +import com.going.server.domain.graph.dto.nodeDetailDto; import com.going.server.domain.graph.service.graphService; import com.going.server.global.response.SuccessResponse; import io.swagger.v3.oas.annotations.Operation; @@ -54,4 +56,38 @@ public SuccessResponse deleteGraph(@PathVariable("graphId") Long graphId) { return SuccessResponse.empty(); } + @GetMapping("/{graphId}") + @Operation(summary = "지식 그래프 전체 데이터(전체 화면) 조회", description = "현재 저장된 전체 지식 그래프 데이터를 조회합니다.") + @ApiResponses({ + @ApiResponse( + responseCode = "200", + description = "지식 그래프가 성공적으로 조회되었습니다.", + content = @Content( + mediaType = "application/json", + schema = @Schema(example = "{\"message\":\"\"}") + ) + ) + }) + public SuccessResponse getGraph(@PathVariable("graphId") Long graphId) { + knowledgeGraphDto result = graphService.getGraph(graphId); + return SuccessResponse.of(result); + } + + @GetMapping("/{graphId}/{nodeId}") + @Operation(summary = "지식 그래프 상세 조회 (노드 상세 조회)", description = "특정 노드의 상세 정보를 조회합니다.") + @ApiResponses({ + @ApiResponse( + responseCode = "200", + description = "노드가 성공적으로 조회되었습니다.", + content = @Content( + mediaType = "application/json", + schema = @Schema(example = "{\"message\":\"\"}") + ) + ) + }) + public SuccessResponse getNode(@PathVariable("graphId") Long graphId, @PathVariable("nodeId") Long nodeId) { + nodeDetailDto result = graphService.getNode(graphId,nodeId); + return SuccessResponse.of(result); + } + } diff --git a/src/main/java/com/going/server/domain/graph/dto/edgeDto.java b/src/main/java/com/going/server/domain/graph/dto/edgeDto.java new file mode 100644 index 0000000..6bc3889 --- /dev/null +++ b/src/main/java/com/going/server/domain/graph/dto/edgeDto.java @@ -0,0 +1,18 @@ +package com.going.server.domain.graph.dto; + +import lombok.Builder; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +@Builder +public class edgeDto { + private String source; + private String target; + private String label; + + public static edgeDto from(String source, String target, String label) { + return edgeDto.builder().source(source).target(target).label(label).build(); + } +} diff --git a/src/main/java/com/going/server/domain/graph/dto/knowledgeGraphDto.java b/src/main/java/com/going/server/domain/graph/dto/knowledgeGraphDto.java new file mode 100644 index 0000000..aa14bab --- /dev/null +++ b/src/main/java/com/going/server/domain/graph/dto/knowledgeGraphDto.java @@ -0,0 +1,18 @@ +package com.going.server.domain.graph.dto; + +import lombok.Builder; +import lombok.Getter; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +@Builder +public class knowledgeGraphDto { + private List nodes; + private List edges; + public static knowledgeGraphDto of(List nodes, List edges) { + return knowledgeGraphDto.builder().nodes(nodes).edges(edges).build(); + } +} diff --git a/src/main/java/com/going/server/domain/graph/dto/nodeDetailDto.java b/src/main/java/com/going/server/domain/graph/dto/nodeDetailDto.java new file mode 100644 index 0000000..9a98481 --- /dev/null +++ b/src/main/java/com/going/server/domain/graph/dto/nodeDetailDto.java @@ -0,0 +1,20 @@ +package com.going.server.domain.graph.dto; + +import lombok.Builder; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +@Builder +public class nodeDetailDto { + private String id; + private String word; + private String sentence; + private String image_url; + private String audio_url; + + public static nodeDetailDto from(String id, String word, String sentence, String image_url, String audio_url) { + return nodeDetailDto.builder().id(id).word(word).image_url(image_url).audio_url(audio_url).build(); + } +} diff --git a/src/main/java/com/going/server/domain/graph/dto/nodeDto.java b/src/main/java/com/going/server/domain/graph/dto/nodeDto.java new file mode 100644 index 0000000..1a7b345 --- /dev/null +++ b/src/main/java/com/going/server/domain/graph/dto/nodeDto.java @@ -0,0 +1,21 @@ +package com.going.server.domain.graph.dto; + +import lombok.Builder; +import lombok.Getter; +import lombok.Setter; +import org.springframework.web.bind.annotation.GetMapping; + +@Getter +@Setter +@Builder +public class nodeDto { + private String id; + private String label; //노트에 나올 아름 + private Long level; //노드 깊이 + private String image; //노드 이미지 주소 + private String description; //노드 확대 시 나올 설명 + + public static nodeDto from(String id, String label, Long level, String image, String description) { + return nodeDto.builder().id(id).label(label).level(level).image(image).description(description).build(); + } +} diff --git a/src/main/java/com/going/server/domain/graph/service/graphService.java b/src/main/java/com/going/server/domain/graph/service/graphService.java index 5912086..db63ec5 100644 --- a/src/main/java/com/going/server/domain/graph/service/graphService.java +++ b/src/main/java/com/going/server/domain/graph/service/graphService.java @@ -2,8 +2,14 @@ import com.going.server.domain.graph.dto.graphDto; import com.going.server.domain.graph.dto.graphListDto; +import com.going.server.domain.graph.dto.knowledgeGraphDto; +import com.going.server.domain.graph.dto.nodeDetailDto; public interface graphService { graphListDto getGraphList(); void deleteGraph(Long graphId); + + knowledgeGraphDto getGraph(Long graphId); + + nodeDetailDto getNode(Long graphId, Long nodeId); } diff --git a/src/main/java/com/going/server/domain/graph/service/graphServiceImpl.java b/src/main/java/com/going/server/domain/graph/service/graphServiceImpl.java index 66200f7..ab2dc39 100644 --- a/src/main/java/com/going/server/domain/graph/service/graphServiceImpl.java +++ b/src/main/java/com/going/server/domain/graph/service/graphServiceImpl.java @@ -1,9 +1,11 @@ package com.going.server.domain.graph.service; -import com.going.server.domain.graph.dto.graphDto; -import com.going.server.domain.graph.dto.graphListDto; +import com.going.server.domain.graph.dto.*; import org.springframework.stereotype.Service; +import java.util.ArrayList; +import java.util.List; + @Service public class graphServiceImpl implements graphService { @@ -18,4 +20,24 @@ public void deleteGraph(Long graphId) { //TODO : graphId로 그래프 찾기 //TODO : 그래프 삭제하는 코드 작성 } + + @Override + public knowledgeGraphDto getGraph(Long graphId) { + //TODO : graphId로 그래프 찾기 + + //TODO : nodeDto에 값 매핑하는 코드 작성 + List nodeDto = new ArrayList<>(); + + //TODO : edgeDto에 값 매핑하는 코드 작성 + List edgeDto = new ArrayList<>(); + + return knowledgeGraphDto.of(nodeDto,edgeDto); + } + + @Override + public nodeDetailDto getNode(Long graphId, Long nodeId) { + //TODO : graphId로 그래프 찾기 + //TODO : nodeId로 노드 찾기 + return nodeDetailDto.from(null,null,null,null,null); + } }