package com.lingyue.graph.service; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.lingyue.graph.entity.Edge; import com.lingyue.graph.mapper.EdgeMapper; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import java.time.LocalDateTime; import java.util.List; @Service @RequiredArgsConstructor public class EdgeService extends ServiceImpl { public Long createEdge(String edgeType, Long fromNodeId, Long toNodeId) { return createEdge(edgeType, fromNodeId, toNodeId, 0); } public Long createEdge(String edgeType, Long fromNodeId, Long toNodeId, int sortOrder) { Edge existing = baseMapper.selectByTypeAndNodes(edgeType, fromNodeId, toNodeId); if (existing != null) { return existing.getId(); } Edge edge = new Edge(); edge.setEdgeType(edgeType); edge.setFromNodeId(fromNodeId); edge.setToNodeId(toNodeId); edge.setSortOrder(sortOrder); edge.setCreatedAt(LocalDateTime.now()); baseMapper.insert(edge); return edge.getId(); } public List listByTypeAndFrom(String edgeType, Long fromNodeId) { return baseMapper.selectByTypeAndFrom(edgeType, fromNodeId); } public List listByTypeAndTo(String edgeType, Long toNodeId) { return baseMapper.selectByTypeAndTo(edgeType, toNodeId); } public Edge getByTypeAndNodes(String edgeType, Long fromNodeId, Long toNodeId) { return baseMapper.selectByTypeAndNodes(edgeType, fromNodeId, toNodeId); } public void deleteByTypeAndNodes(String edgeType, Long fromNodeId, Long toNodeId) { baseMapper.deleteByTypeAndNodes(edgeType, fromNodeId, toNodeId); } public int countByTypeAndFrom(String edgeType, Long fromNodeId) { return baseMapper.countByTypeAndFrom(edgeType, fromNodeId); } public void deleteByTypeAndFrom(String edgeType, Long fromNodeId) { baseMapper.deleteByTypeAndFrom(edgeType, fromNodeId); } }