32 lines
661 B
Go
32 lines
661 B
Go
package service
|
|
|
|
import (
|
|
"context"
|
|
|
|
"github.com/neo4j/neo4j-go-driver/v5/neo4j"
|
|
|
|
"knowledge-graph-backend/internal/model"
|
|
)
|
|
|
|
func (s *Neo4jService) fetchNodeByID(id string) (model.Node, bool, error) {
|
|
ctx := context.Background()
|
|
result, err := neo4j.ExecuteQuery(ctx, s.driver,
|
|
`MATCH (n {id: $id}) RETURN n LIMIT 1`,
|
|
map[string]any{"id": id},
|
|
neo4j.EagerResultTransformer,
|
|
)
|
|
if err != nil {
|
|
return model.Node{}, false, err
|
|
}
|
|
if len(result.Records) == 0 {
|
|
return model.Node{}, false, nil
|
|
}
|
|
|
|
v, _ := result.Records[0].Get("n")
|
|
n, ok := v.(neo4j.Node)
|
|
if !ok {
|
|
return model.Node{}, false, nil
|
|
}
|
|
return neo4jNodeToModel(n), true, nil
|
|
}
|