EdgeService.java 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. package com.lingyue.graph.service;
  2. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  3. import com.lingyue.graph.entity.Edge;
  4. import com.lingyue.graph.mapper.EdgeMapper;
  5. import lombok.RequiredArgsConstructor;
  6. import org.springframework.stereotype.Service;
  7. import java.time.LocalDateTime;
  8. import java.util.List;
  9. @Service
  10. @RequiredArgsConstructor
  11. public class EdgeService extends ServiceImpl<EdgeMapper, Edge> {
  12. public Long createEdge(String edgeType, Long fromNodeId, Long toNodeId) {
  13. return createEdge(edgeType, fromNodeId, toNodeId, 0);
  14. }
  15. public Long createEdge(String edgeType, Long fromNodeId, Long toNodeId, int sortOrder) {
  16. Edge existing = baseMapper.selectByTypeAndNodes(edgeType, fromNodeId, toNodeId);
  17. if (existing != null) {
  18. return existing.getId();
  19. }
  20. Edge edge = new Edge();
  21. edge.setEdgeType(edgeType);
  22. edge.setFromNodeId(fromNodeId);
  23. edge.setToNodeId(toNodeId);
  24. edge.setSortOrder(sortOrder);
  25. edge.setCreatedAt(LocalDateTime.now());
  26. baseMapper.insert(edge);
  27. return edge.getId();
  28. }
  29. public List<Edge> listByTypeAndFrom(String edgeType, Long fromNodeId) {
  30. return baseMapper.selectByTypeAndFrom(edgeType, fromNodeId);
  31. }
  32. public List<Edge> listByTypeAndTo(String edgeType, Long toNodeId) {
  33. return baseMapper.selectByTypeAndTo(edgeType, toNodeId);
  34. }
  35. public Edge getByTypeAndNodes(String edgeType, Long fromNodeId, Long toNodeId) {
  36. return baseMapper.selectByTypeAndNodes(edgeType, fromNodeId, toNodeId);
  37. }
  38. public void deleteByTypeAndNodes(String edgeType, Long fromNodeId, Long toNodeId) {
  39. baseMapper.deleteByTypeAndNodes(edgeType, fromNodeId, toNodeId);
  40. }
  41. public int countByTypeAndFrom(String edgeType, Long fromNodeId) {
  42. return baseMapper.countByTypeAndFrom(edgeType, fromNodeId);
  43. }
  44. public void deleteByTypeAndFrom(String edgeType, Long fromNodeId) {
  45. baseMapper.deleteByTypeAndFrom(edgeType, fromNodeId);
  46. }
  47. }