更新前后端代码
This commit is contained in:
+88
@@ -0,0 +1,88 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"os"
|
||||
"path/filepath"
|
||||
|
||||
"github.com/glebarez/sqlite"
|
||||
"go.uber.org/zap"
|
||||
"gorm.io/gorm"
|
||||
|
||||
"filestoragesystem/internal/config"
|
||||
"filestoragesystem/internal/model"
|
||||
"filestoragesystem/internal/router"
|
||||
"filestoragesystem/internal/service"
|
||||
"filestoragesystem/internal/utils"
|
||||
)
|
||||
|
||||
func main() {
|
||||
// 1. 加载配置
|
||||
cfg, err := config.Load("config.yaml")
|
||||
if err != nil {
|
||||
fmt.Println("加载配置失败:", err)
|
||||
os.Exit(1)
|
||||
}
|
||||
if err := cfg.EnsureDirs(); err != nil {
|
||||
fmt.Println("初始化目录失败:", err)
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
// 2. 初始化日志
|
||||
log, err := utils.InitLogger(cfg.Log.Level, cfg.Log.Dir)
|
||||
if err != nil {
|
||||
fmt.Println("初始化日志失败:", err)
|
||||
os.Exit(1)
|
||||
}
|
||||
defer func() { _ = log.Sync() }()
|
||||
zap.ReplaceGlobals(log)
|
||||
|
||||
// 3. 连接数据库
|
||||
if cfg.Database.Driver != "sqlite" {
|
||||
log.Warn("当前仅支持sqlite驱动,将按sqlite处理", zap.String("driver", cfg.Database.Driver))
|
||||
}
|
||||
db, err := gorm.Open(sqlite.Open(cfg.Database.Source), &gorm.Config{})
|
||||
if err != nil {
|
||||
log.Fatal("连接数据库失败", zap.Error(err))
|
||||
}
|
||||
sqlDB, err := db.DB()
|
||||
if err == nil {
|
||||
sqlDB.SetMaxOpenConns(10)
|
||||
}
|
||||
|
||||
// 4. 迁移与种子数据
|
||||
if err := model.AutoMigrate(db); err != nil {
|
||||
log.Fatal("数据库迁移失败", zap.Error(err))
|
||||
}
|
||||
if err := model.SeedData(db); err != nil {
|
||||
log.Fatal("初始化种子数据失败", zap.Error(err))
|
||||
}
|
||||
|
||||
// 5. 系统日志异步落库
|
||||
utils.InitSystemLog(db)
|
||||
|
||||
// 6. JWT参数
|
||||
utils.InitJWT(cfg.JWT.Secret, cfg.JWT.Expire)
|
||||
|
||||
// 7. 服务与路由
|
||||
svc := service.NewServices(cfg, db)
|
||||
|
||||
// 8. 引导管理员账户
|
||||
if err := svc.Auth.BootstrapAdmin(); err != nil {
|
||||
log.Error("初始化管理员账户失败", zap.Error(err))
|
||||
}
|
||||
|
||||
// 9. 启动HTTP服务
|
||||
r := router.New(cfg, db, svc)
|
||||
addr := fmt.Sprintf(":%s", cfg.Server.Port)
|
||||
absRoot, _ := filepath.Abs(cfg.Storage.Root)
|
||||
log.Info("FileStorageSystem 启动",
|
||||
zap.String("addr", addr),
|
||||
zap.String("mode", cfg.Server.Mode),
|
||||
zap.String("domain", cfg.Server.Domain),
|
||||
zap.String("storage", absRoot),
|
||||
)
|
||||
if err := r.Run(addr); err != nil {
|
||||
log.Fatal("服务启动失败", zap.Error(err))
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user