package database import ( "database/sql" logx "go-admin/logger" "log" "os" "time" "gorm.io/driver/mysql" "gorm.io/gorm" "gorm.io/gorm/logger" "gorm.io/gorm/schema" "go-admin/common/config" "go-admin/common/global" "go-admin/tools" toolsConfig "go-admin/tools/config" ) type Mysql struct { } func (e *Mysql) Setup() { global.Source = e.GetConnect() logx.Info(tools.Green(global.Source)) db, err := sql.Open("mysql", global.Source) if err != nil { logx.Fatal(tools.Red(e.GetDriver()+" connect error :"), err) } global.Cfg.SetDb(&config.DBConfig{ Driver: "mysql", DB: db, }) global.Eloquent, err = e.Open(db, &gorm.Config{ NamingStrategy: schema.NamingStrategy{ SingularTable: true, }, }) if err != nil { logx.Fatal(tools.Red(e.GetDriver()+" connect error :"), err) } else { logx.Info(tools.Green(e.GetDriver() + " connect success !")) } if global.Eloquent.Error != nil { logx.Fatal(tools.Red(" database error :"), global.Eloquent.Error) } if toolsConfig.LoggerConfig.EnabledDB { global.Eloquent.Logger = logger.New(log.New(os.Stdout, "\r\n", log.LstdFlags), logger.Config{ SlowThreshold: time.Second, Colorful: true, LogLevel: logger.Info, }) } } // 打开数据库连接 func (e *Mysql) Open(db *sql.DB, cfg *gorm.Config) (*gorm.DB, error) { return gorm.Open(mysql.New(mysql.Config{Conn: db}), cfg) } // 获取数据库连接 func (e *Mysql) GetConnect() string { return toolsConfig.DatabaseConfig.Source } func (e *Mysql) GetDriver() string { return toolsConfig.DatabaseConfig.Driver }