Files
树萌芽 6b3fcc1791 security: stop tracking env files; admin gate via VITE_SITE_ADMIN_GATE; Redis/cache/docs
Remove InfoGenie-frontend and Go .env from version control; add .env.example templates; ignore .claude local settings. Admin UI reads site gate from env only. Note: rotate secrets if repo history was ever public.

Made-with: Cursor
2026-04-03 16:10:12 +08:00

52 lines
1.3 KiB
Go

package main
import (
"fmt"
"log"
"github.com/gin-gonic/gin"
"infogenie-backend/config"
"infogenie-backend/internal/cache"
"infogenie-backend/internal/database"
"infogenie-backend/internal/router"
)
func main() {
cfg, err := config.Load()
if err != nil {
log.Fatalf("配置加载失败: %v", err)
}
log.Printf("InfoGenie Go Backend 启动中... [环境: %s, DB: %s:%s/%s]", cfg.Env, cfg.DB.Host, cfg.DB.Port, cfg.DB.Name)
if err := database.Init(cfg.DB); err != nil {
log.Fatalf("数据库初始化失败: %v", err)
}
if err := cache.Init(cfg.Redis); err != nil {
log.Fatalf("Redis 初始化失败: %v", err)
}
if cfg.Redis.Enabled {
log.Printf("Redis 已启用: %s DB=%d prefix=%s TTL=%s", cfg.Redis.Addr, cfg.Redis.DB, cfg.Redis.KeyPrefix, cfg.Redis.SiteTTL)
}
if err := database.AutoMigrate(); err != nil {
log.Fatalf("数据库迁移失败: %v", err)
}
log.Println("数据库表自动迁移完成")
if cfg.Env == "production" {
gin.SetMode(gin.ReleaseMode)
}
r := gin.Default()
router.Setup(r)
addr := fmt.Sprintf("0.0.0.0:%s", cfg.Port)
log.Printf("🚀 InfoGenie 后端服务已启动: http://localhost:%s", cfg.Port)
if err := r.Run(addr); err != nil {
log.Fatalf("服务启动失败: %v", err)
}
}