Files
knowledge-graph-agent/backend/main.go
T
2026-04-13 14:36:54 +08:00

67 lines
1.8 KiB
Go

package main
import (
"log"
"net/http"
"github.com/gin-contrib/cors"
"github.com/gin-gonic/gin"
"knowledge-graph-backend/config"
"knowledge-graph-backend/handlers"
"knowledge-graph-backend/services"
)
func main() {
cfg, err := config.Load()
if err != nil {
log.Fatalf("Failed to load config: %v", err)
}
dataService, err := services.NewDataService(cfg.Data.FilePath)
if err != nil {
log.Fatalf("Failed to initialize data service: %v", err)
}
graphHandler := handlers.NewGraphHandler(dataService)
searchHandler := handlers.NewSearchHandler(dataService)
nodeHandler := handlers.NewNodeHandler(dataService)
router := gin.Default()
router.Use(cors.New(cfg.CORS.ToGinConfig()))
router.GET("/health", func(c *gin.Context) {
c.JSON(http.StatusOK, gin.H{
"status": "ok",
"message": "Knowledge Graph API is running",
"version": "1.0.0",
})
})
api := router.Group("/api")
{
api.GET("/graph", graphHandler.GetGraphData)
api.GET("/graph/stats", graphHandler.GetStats)
api.GET("/search", searchHandler.SearchNodes)
api.GET("/nodes/:id", nodeHandler.GetNodeByID)
api.GET("/nodes/:id/neighbors", nodeHandler.GetNeighbors)
}
log.Println("Knowledge Graph API Server running on http://localhost:" + cfg.Server.Port)
log.Println("Data file loaded from: " + cfg.Data.FilePath)
log.Println("Available endpoints:")
log.Println(" GET /health - Health check")
log.Println(" GET /api/graph - Get all graph data")
log.Println(" GET /api/graph/stats - Get graph statistics")
log.Println(" GET /api/search?q=query - Search nodes")
log.Println(" GET /api/nodes/:id - Get node by ID")
log.Println(" GET /api/nodes/:id/neighbors - Get node neighbors")
if err := router.Run(":" + cfg.Server.Port); err != nil {
log.Fatalf("Failed to start server: %v", err)
}
}