Internal error occurred but is skipped: FindTagsByCommitIDs

Files
VLoop/backend/cmd/main.go

92 lines
2.4 KiB
Go
Raw Normal View History

package main
import (
2025-12-23 02:21:33 +08:00
"context"
"feedsystem_video_go/internal/config"
"feedsystem_video_go/internal/db"
apphttp "feedsystem_video_go/internal/http"
2025-12-29 04:13:13 +08:00
rabbitmq "feedsystem_video_go/internal/middleware/rabbitmq"
rediscache "feedsystem_video_go/internal/middleware/redis"
"feedsystem_video_go/internal/observability"
"log"
"os"
2025-12-23 02:21:33 +08:00
"strconv"
"time"
)
func main() {
2025-12-29 04:13:13 +08:00
// 加载配置
configPath := os.Getenv("CONFIG_PATH")
if configPath == "" {
configPath = "configs/config.yaml"
}
log.Printf("Loading config from %s", configPath)
cfg, usedDefault, err := config.LoadLocalDev(configPath)
if err != nil {
log.Fatalf("Failed to load config: %v", err)
}
if usedDefault {
log.Printf("Config File %s not found, using default local config", configPath)
} else {
log.Printf("Config loaded from file: %s", configPath)
}
2025-12-29 04:13:13 +08:00
// 连接数据库
2025-12-23 02:21:33 +08:00
//log.Printf("Database config: %v", cfg.Database)
sqlDB, err := db.NewDB(cfg.Database)
if err != nil {
log.Fatalf("Failed to connect database: %v", err)
}
if err := db.AutoMigrate(sqlDB); err != nil {
log.Fatalf("Failed to auto migrate database: %v", err)
}
defer db.CloseDB(sqlDB)
2025-12-29 04:13:13 +08:00
// 连接 Redis (可选,用于缓存)
cache, err := rediscache.NewFromEnv(&cfg.Redis)
2025-12-23 02:21:33 +08:00
if err != nil {
log.Printf("Redis config error (cache disabled): %v", err)
cache = nil
} else {
pingCtx, cancel := context.WithTimeout(context.Background(), 300*time.Millisecond)
defer cancel()
if err := cache.Ping(pingCtx); err != nil {
log.Printf("Redis not available (cache disabled): %v", err)
_ = cache.Close()
cache = nil
} else {
defer cache.Close()
log.Printf("Redis connected (cache enabled)")
}
}
2025-12-29 04:13:13 +08:00
// 连接 RabbitMQ (可选,用于消息队列)
rmq, err := rabbitmq.NewRabbitMQ(&cfg.RabbitMQ)
if err != nil {
log.Printf("RabbitMQ config error (disabled): %v", err)
rmq = nil
} else {
defer rmq.Close()
log.Printf("RabbitMQ connected")
}
// Pprof
pprofServer, err := observability.NewPprofServer(
"API",
cfg.ObservabilityConfig.Pprof.Enabled,
cfg.ObservabilityConfig.Pprof.ApiAddr,
)
if err != nil {
log.Printf("Failed to start API pprof server: %v", err)
}
2026-04-23 19:00:13 +08:00
if pprofServer != nil {
defer pprofServer.Close()
}
2025-12-29 04:13:13 +08:00
// 设置路由
r := apphttp.SetRouter(sqlDB, cache, rmq)
2025-12-23 02:21:33 +08:00
log.Printf("Server is running on port %d", cfg.Server.Port)
if err := r.Run(":" + strconv.Itoa(cfg.Server.Port)); err != nil {
log.Fatalf("Failed to run server: %v", err)
}
}