package repository import ( "esaccount" "fmt" "gorm.io/driver/mysql" "gorm.io/gorm" "gorm.io/gorm/logger" ) type Config struct { Host string Port string Username string Password string DBName string } func NewDB(cfg Config) (*gorm.DB, error) { dsn := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=utf8mb4&parseTime=True&loc=Local", cfg.Username, cfg.Password, cfg.Host, cfg.Port, cfg.DBName) db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{ Logger: logger.Default.LogMode(logger.Silent), }) if err != nil { return nil, err } err = db.Set("gorm:table_options", "CHARSET=utf8mb4").AutoMigrate(&esaccount.Account{}) if err != nil { return nil, err } return db, nil }