package database import ( "log" "time" "gorm.io/driver/mysql" "gorm.io/gorm" "gorm.io/gorm/logger" ) // Open initialises a GORM DB connection and runs AutoMigrate for all models. func Open(dsn string) (*gorm.DB, error) { db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{ Logger: logger.Default.LogMode(logger.Warn), }) if err != nil { return nil, err } sqlDB, err := db.DB() if err != nil { return nil, err } sqlDB.SetMaxIdleConns(5) sqlDB.SetMaxOpenConns(20) sqlDB.SetConnMaxLifetime(time.Hour) if err := autoMigrate(db); err != nil { return nil, err } log.Println("[DB] 数据库连接成功,表结构已同步") return db, nil } func autoMigrate(db *gorm.DB) error { return db.AutoMigrate( &ProductRow{}, &ProductCodeRow{}, &OrderRow{}, &SiteSettingRow{}, &WishlistRow{}, &ChatMessageRow{}, ) }