package database import ( "log" "soul-api/internal/model" "gorm.io/driver/mysql" "gorm.io/gorm" ) var db *gorm.DB // Init 使用 DSN 连接 MySQL,供 handler 通过 DB() 使用 func Init(dsn string) error { var err error db, err = gorm.Open(mysql.Open(dsn), &gorm.Config{}) if err != nil { return err } if err := db.AutoMigrate(&model.WechatCallbackLog{}); err != nil { log.Printf("database: wechat_callback_logs migrate warning: %v", err) } if err := db.AutoMigrate(&model.Withdrawal{}); err != nil { log.Printf("database: withdrawals migrate warning: %v", err) } if err := db.AutoMigrate(&model.MatchRecord{}); err != nil { log.Printf("database: match_records migrate warning: %v", err) } if err := db.AutoMigrate(&model.UserAddress{}); err != nil { log.Printf("database: user_addresses migrate warning: %v", err) } log.Println("database: connected") return nil } // DB 返回全局 *gorm.DB,仅在 Init 成功后调用 func DB() *gorm.DB { return db }