refactor: 重构neo4j服务
This commit is contained in:
@@ -46,23 +46,17 @@ func NewEdgeCRUDHandler(svc service.GraphService) *EdgeCRUDHandler {
|
||||
func (h *NodeCRUDHandler) CreateNode(c *gin.Context) {
|
||||
var req model.CreateNodeRequest
|
||||
if err := c.ShouldBindJSON(&req); err != nil {
|
||||
c.JSON(http.StatusBadRequest, model.ErrorResponse{
|
||||
Error: "invalid_request",
|
||||
Message: err.Error(),
|
||||
})
|
||||
c.JSON(http.StatusBadRequest, model.ErrorResponse{Error: "invalid_request", Message: err.Error()})
|
||||
return
|
||||
}
|
||||
|
||||
node, err := h.service.CreateNode(req)
|
||||
if err != nil {
|
||||
c.JSON(http.StatusConflict, model.ErrorResponse{
|
||||
Error: "create_failed",
|
||||
Message: err.Error(),
|
||||
})
|
||||
c.JSON(http.StatusConflict, model.ErrorResponse{Error: "create_failed", Message: err.Error()})
|
||||
return
|
||||
}
|
||||
|
||||
c.JSON(http.StatusOK, node)
|
||||
c.JSON(http.StatusCreated, node)
|
||||
}
|
||||
|
||||
// UpdateNode 更新节点
|
||||
@@ -82,19 +76,13 @@ func (h *NodeCRUDHandler) UpdateNode(c *gin.Context) {
|
||||
|
||||
var req model.UpdateNodeRequest
|
||||
if err := c.ShouldBindJSON(&req); err != nil {
|
||||
c.JSON(http.StatusBadRequest, model.ErrorResponse{
|
||||
Error: "invalid_request",
|
||||
Message: err.Error(),
|
||||
})
|
||||
c.JSON(http.StatusBadRequest, model.ErrorResponse{Error: "invalid_request", Message: err.Error()})
|
||||
return
|
||||
}
|
||||
|
||||
node, err := h.service.UpdateNode(id, req)
|
||||
if err != nil {
|
||||
c.JSON(http.StatusNotFound, model.ErrorResponse{
|
||||
Error: "update_failed",
|
||||
Message: err.Error(),
|
||||
})
|
||||
c.JSON(http.StatusNotFound, model.ErrorResponse{Error: "update_failed", Message: err.Error()})
|
||||
return
|
||||
}
|
||||
|
||||
@@ -113,20 +101,12 @@ func (h *NodeCRUDHandler) UpdateNode(c *gin.Context) {
|
||||
func (h *NodeCRUDHandler) DeleteNode(c *gin.Context) {
|
||||
id := c.Param("id")
|
||||
|
||||
err := h.service.DeleteNode(id)
|
||||
if err != nil {
|
||||
c.JSON(http.StatusNotFound, model.ErrorResponse{
|
||||
Error: "delete_failed",
|
||||
Message: err.Error(),
|
||||
})
|
||||
if err := h.service.DeleteNode(id); err != nil {
|
||||
c.JSON(http.StatusNotFound, model.ErrorResponse{Error: "delete_failed", Message: err.Error()})
|
||||
return
|
||||
}
|
||||
|
||||
c.JSON(http.StatusOK, model.DeleteResponse{
|
||||
Success: true,
|
||||
Message: "节点已成功删除",
|
||||
ID: id,
|
||||
})
|
||||
c.JSON(http.StatusOK, model.DeleteResponse{Success: true, Message: "节点已成功删除", ID: id})
|
||||
}
|
||||
|
||||
// CreateEdge 创建新边
|
||||
@@ -144,33 +124,17 @@ func (h *NodeCRUDHandler) DeleteNode(c *gin.Context) {
|
||||
func (h *EdgeCRUDHandler) CreateEdge(c *gin.Context) {
|
||||
var req model.CreateEdgeRequest
|
||||
if err := c.ShouldBindJSON(&req); err != nil {
|
||||
c.JSON(http.StatusBadRequest, model.ErrorResponse{
|
||||
Error: "invalid_request",
|
||||
Message: err.Error(),
|
||||
})
|
||||
c.JSON(http.StatusBadRequest, model.ErrorResponse{Error: "invalid_request", Message: err.Error()})
|
||||
return
|
||||
}
|
||||
|
||||
edge, err := h.service.CreateEdge(req)
|
||||
if err != nil {
|
||||
c.JSON(http.StatusConflict, model.ErrorResponse{
|
||||
Error: "create_failed",
|
||||
Message: err.Error(),
|
||||
})
|
||||
c.JSON(http.StatusConflict, model.ErrorResponse{Error: "create_failed", Message: err.Error()})
|
||||
return
|
||||
}
|
||||
|
||||
// 转换为响应格式
|
||||
response := model.EdgeResponse{
|
||||
ID: edge.ID,
|
||||
Source: edge.Source,
|
||||
Target: edge.Target,
|
||||
Label: edge.Label,
|
||||
Type: edge.Type,
|
||||
Properties: edge.Properties,
|
||||
}
|
||||
|
||||
c.JSON(http.StatusOK, response)
|
||||
c.JSON(http.StatusCreated, model.EdgeResponse{ID: edge.ID, Source: edge.Source, Target: edge.Target, Label: edge.Label, Type: edge.Type, Properties: edge.Properties})
|
||||
}
|
||||
|
||||
// DeleteEdge 删除边
|
||||
@@ -185,18 +149,10 @@ func (h *EdgeCRUDHandler) CreateEdge(c *gin.Context) {
|
||||
func (h *EdgeCRUDHandler) DeleteEdge(c *gin.Context) {
|
||||
edgeID := c.Param("id")
|
||||
|
||||
err := h.service.DeleteEdge(edgeID)
|
||||
if err != nil {
|
||||
c.JSON(http.StatusNotFound, model.ErrorResponse{
|
||||
Error: "delete_failed",
|
||||
Message: err.Error(),
|
||||
})
|
||||
if err := h.service.DeleteEdge(edgeID); err != nil {
|
||||
c.JSON(http.StatusNotFound, model.ErrorResponse{Error: "delete_failed", Message: err.Error()})
|
||||
return
|
||||
}
|
||||
|
||||
c.JSON(http.StatusOK, model.DeleteResponse{
|
||||
Success: true,
|
||||
Message: "边已成功删除",
|
||||
ID: edgeID,
|
||||
})
|
||||
c.JSON(http.StatusOK, model.DeleteResponse{Success: true, Message: "边已成功删除", ID: edgeID})
|
||||
}
|
||||
|
||||
@@ -4,6 +4,7 @@ import (
|
||||
"net/http"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
"knowledge-graph-backend/internal/model"
|
||||
"knowledge-graph-backend/internal/service"
|
||||
)
|
||||
|
||||
@@ -29,19 +30,13 @@ func NewNodeHandler(svc service.GraphService) *NodeHandler {
|
||||
func (h *NodeHandler) GetNodeByID(c *gin.Context) {
|
||||
nodeID := c.Param("id")
|
||||
if nodeID == "" {
|
||||
c.JSON(http.StatusBadRequest, gin.H{
|
||||
"error": "Bad Request",
|
||||
"message": "Node ID is required",
|
||||
})
|
||||
c.JSON(http.StatusBadRequest, model.ErrorResponse{Error: "bad_request", Message: "Node ID is required"})
|
||||
return
|
||||
}
|
||||
|
||||
node, found := h.service.GetNodeByID(nodeID)
|
||||
if !found {
|
||||
c.JSON(http.StatusNotFound, gin.H{
|
||||
"error": "Not Found",
|
||||
"message": "Node with ID '" + nodeID + "' not found",
|
||||
})
|
||||
c.JSON(http.StatusNotFound, model.ErrorResponse{Error: "not_found", Message: "Node with ID '" + nodeID + "' not found"})
|
||||
return
|
||||
}
|
||||
|
||||
@@ -60,19 +55,13 @@ func (h *NodeHandler) GetNodeByID(c *gin.Context) {
|
||||
func (h *NodeHandler) GetNeighbors(c *gin.Context) {
|
||||
nodeID := c.Param("id")
|
||||
if nodeID == "" {
|
||||
c.JSON(http.StatusBadRequest, gin.H{
|
||||
"error": "Bad Request",
|
||||
"message": "Node ID is required",
|
||||
})
|
||||
c.JSON(http.StatusBadRequest, model.ErrorResponse{Error: "bad_request", Message: "Node ID is required"})
|
||||
return
|
||||
}
|
||||
|
||||
neighbors, found := h.service.GetNeighbors(nodeID)
|
||||
if !found {
|
||||
c.JSON(http.StatusNotFound, gin.H{
|
||||
"error": "Not Found",
|
||||
"message": "Node with ID '" + nodeID + "' not found",
|
||||
})
|
||||
c.JSON(http.StatusNotFound, model.ErrorResponse{Error: "not_found", Message: "Node with ID '" + nodeID + "' not found"})
|
||||
return
|
||||
}
|
||||
|
||||
|
||||
@@ -4,6 +4,7 @@ import (
|
||||
"net/http"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
"knowledge-graph-backend/internal/model"
|
||||
"knowledge-graph-backend/internal/service"
|
||||
)
|
||||
|
||||
@@ -28,10 +29,7 @@ func NewSearchHandler(svc service.GraphService) *SearchHandler {
|
||||
func (h *SearchHandler) SearchNodes(c *gin.Context) {
|
||||
query := c.Query("q")
|
||||
if query == "" {
|
||||
c.JSON(http.StatusBadRequest, gin.H{
|
||||
"error": "Bad Request",
|
||||
"message": "Query parameter 'q' is required",
|
||||
})
|
||||
c.JSON(http.StatusBadRequest, model.ErrorResponse{Error: "bad_request", Message: "Query parameter 'q' is required"})
|
||||
return
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user