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 index db7279d..95da520 100644 --- a/src/main/java/com/going/server/domain/graph/dto/NodeDto.java +++ b/src/main/java/com/going/server/domain/graph/dto/NodeDto.java @@ -1,5 +1,6 @@ package com.going.server.domain.graph.dto; +import com.going.server.domain.graph.entity.GraphNode; import lombok.Builder; import lombok.Getter; import lombok.Setter; @@ -14,7 +15,7 @@ public class NodeDto { 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(); + public static NodeDto from(GraphNode node, String image) { + return NodeDto.builder().id(node.getIdAsString()).label(node.getLabel()).level(node.getLevel()).image(image).description(node.getIncludeSentence()).build(); } } diff --git a/src/main/java/com/going/server/domain/graph/repository/GraphRepository.java b/src/main/java/com/going/server/domain/graph/repository/GraphRepository.java index a4a3afc..fa59140 100644 --- a/src/main/java/com/going/server/domain/graph/repository/GraphRepository.java +++ b/src/main/java/com/going/server/domain/graph/repository/GraphRepository.java @@ -1,9 +1,13 @@ package com.going.server.domain.graph.repository; import com.going.server.domain.graph.entity.Graph; +import com.going.server.domain.graph.exception.GraphNotFoundException; import jdk.jfr.Registered; import org.springframework.data.neo4j.repository.Neo4jRepository; @Registered public interface GraphRepository extends Neo4jRepository { + default Graph getByGraph(Long graphId) { + return findById(graphId).orElseThrow(GraphNotFoundException::new); + } } 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 8076d5d..af69210 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 @@ -2,6 +2,8 @@ import com.going.server.domain.graph.dto.*; import com.going.server.domain.graph.entity.Graph; +import com.going.server.domain.graph.entity.GraphEdge; +import com.going.server.domain.graph.entity.GraphNode; import com.going.server.domain.graph.repository.GraphRepository; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; @@ -32,21 +34,30 @@ public GraphListDto getGraphList() { @Override public void deleteGraph(Long graphId) { - //TODO : graphId로 그래프 찾기 - //TODO : 그래프 삭제하는 코드 작성 + Graph graph = graphRepository.getByGraph(graphId); + graphRepository.deleteById(graph.getId()); } @Override public KnowledgeGraphDto getGraph(Long graphId) { - //TODO : graphId로 그래프 찾기 + Graph graph = graphRepository.getByGraph(graphId); - //TODO : nodeDto에 값 매핑하는 코드 작성 - List nodeDto = new ArrayList<>(); + List nodeDtoList = new ArrayList<>(); + List edgeDtoList = new ArrayList<>(); - //TODO : edgeDto에 값 매핑하는 코드 작성 - List edgeDto = new ArrayList<>(); + for (GraphNode node : graph.getNodes()) { + NodeDto nodeDto = NodeDto.from(node, null); + nodeDtoList.add(nodeDto); - return KnowledgeGraphDto.of(nodeDto,edgeDto); + if (node.getEdges() != null) { + for (GraphEdge edge : node.getEdges()) { + EdgeDto edgeDto = EdgeDto.from(edge.getSource(),edge.getTarget().getNodeId().toString(),edge.getLabel()); + edgeDtoList.add(edgeDto); + } + } + } + + return KnowledgeGraphDto.of(nodeDtoList, edgeDtoList); } @Override