diff --git a/config/config.go b/config/config.go index 26b8ff7..93bb476 100644 --- a/config/config.go +++ b/config/config.go @@ -31,8 +31,17 @@ var ( Cron string Notice string Admins []int64 + Mysql MysqlConfig ) +type MysqlConfig struct { + Host string + Port int + User string + Password string + DB string +} + func InitConfig() { viper.SetConfigName("config") viper.AddConfigPath(".") @@ -56,6 +65,13 @@ func InitConfig() { MaxGoroutines = viper.GetInt("goroutine") Admins = getAdmins() + Mysql = MysqlConfig{ + Host: viper.GetString("mysql.host"), + Port: viper.GetInt("mysql.port"), + User: viper.GetString("mysql.user"), + Password: viper.GetString("mysql.password"), + DB: viper.GetString("mysql.database"), + } viper.WatchConfig() viper.OnConfigChange(func(e fsnotify.Event) { MaxGoroutines = viper.GetInt("goroutine") diff --git a/model/db.go b/model/db.go new file mode 100644 index 0000000..672c8ec --- /dev/null +++ b/model/db.go @@ -0,0 +1,32 @@ +package model + +import ( + "fmt" + "github.com/iyear/E5SubBot/config" + "go.uber.org/zap" + "gorm.io/driver/mysql" + "gorm.io/gorm" + "time" +) + +var DB *gorm.DB + +func InitDB() { + var err error + dsn := fmt.Sprintf("%s:%s@tcp(%s:%d)/%s?charset=utf8mb4&parseTime=True&loc=Local", + config.Mysql.User, + config.Mysql.Password, + config.Mysql.Host, + config.Mysql.Port, + config.Mysql.DB, + ) + DB, err = gorm.Open(mysql.Open(dsn), &gorm.Config{ + NowFunc: func() time.Time { + return time.Now() + }, + }) + if err != nil { + zap.S().Errorw("failed to open db", "error", err) + } + DB.AutoMigrate(&Client{}) +} diff --git a/model/sqlite.go b/model/sqlite.go deleted file mode 100644 index f14e0d5..0000000 --- a/model/sqlite.go +++ /dev/null @@ -1,23 +0,0 @@ -package model - -import ( - "go.uber.org/zap" - "gorm.io/driver/sqlite" - "gorm.io/gorm" - "time" -) - -var DB *gorm.DB - -func InitDB() { - var err error - DB, err = gorm.Open(sqlite.Open("data.db"), &gorm.Config{ - NowFunc: func() time.Time { - return time.Now() - }, - }) - if err != nil { - zap.S().Errorw("failed to open db", "error", err) - } - DB.AutoMigrate(&Client{}) -}