package dao import ( "os" "path/filepath" "time" "github.com/glebarez/sqlite" "github.com/krau/SaveAny-Bot/config" "github.com/krau/SaveAny-Bot/logger" "github.com/krau/SaveAny-Bot/types" "gorm.io/gorm" glogger "gorm.io/gorm/logger" ) var db *gorm.DB func Init() { if err := os.MkdirAll(filepath.Dir(config.Cfg.DB.Path), 0755); err != nil { logger.L.Fatal("Failed to create data directory: ", err) os.Exit(1) } var err error db, err = gorm.Open(sqlite.Open(config.Cfg.DB.Path), &gorm.Config{ Logger: glogger.New(logger.L, glogger.Config{ Colorful: true, SlowThreshold: time.Second * 5, LogLevel: glogger.Error, IgnoreRecordNotFoundError: true, ParameterizedQueries: true, }), PrepareStmt: true, }) if err != nil { logger.L.Fatal("Failed to open database: ", err) os.Exit(1) } logger.L.Debug("Database connected") if err := db.AutoMigrate(&types.ReceivedFile{}, &types.User{}); err != nil { logger.L.Fatal("迁移数据库失败, 如果您从旧版本升级, 建议手动删除数据库文件后重试: ", err) } for _, admin := range config.Cfg.GetUsersID() { if err := CreateUser(int64(admin)); err != nil { logger.L.Fatal("Failed to create admin user: ", err) } } }