mysql_drive.go 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. package database
  2. import (
  3. "database/sql"
  4. "log"
  5. "os"
  6. "time"
  7. "gorm.io/driver/mysql"
  8. "gorm.io/gorm"
  9. "gorm.io/gorm/logger"
  10. "gorm.io/gorm/schema"
  11. "device-manage/common/config"
  12. "device-manage/common/global"
  13. "device-manage/tools"
  14. toolsConfig "device-manage/tools/config"
  15. )
  16. type Mysql struct {
  17. }
  18. func (e *Mysql) Setup() {
  19. global.Source = e.GetConnect()
  20. global.Logger.Info(tools.Green(global.Source))
  21. db, err := sql.Open("mysql", global.Source)
  22. if err != nil {
  23. global.Logger.Fatal(tools.Red(e.GetDriver()+" connect error :"), err)
  24. }
  25. global.Cfg.SetDb(&config.DBConfig{
  26. Driver: "mysql",
  27. DB: db,
  28. })
  29. global.Eloquent, err = e.Open(db, &gorm.Config{
  30. NamingStrategy: schema.NamingStrategy{
  31. SingularTable: true,
  32. },
  33. })
  34. if err != nil {
  35. global.Logger.Fatal(tools.Red(e.GetDriver()+" connect error :"), err)
  36. } else {
  37. global.Logger.Info(tools.Green(e.GetDriver() + " connect success !"))
  38. }
  39. if global.Eloquent.Error != nil {
  40. global.Logger.Fatal(tools.Red(" database error :"), global.Eloquent.Error)
  41. }
  42. if toolsConfig.LoggerConfig.EnabledDB {
  43. global.Eloquent.Logger = logger.New(log.New(os.Stdout, "\r\n", log.LstdFlags), logger.Config{
  44. SlowThreshold: time.Second,
  45. Colorful: true,
  46. LogLevel: logger.Info,
  47. })
  48. }
  49. }
  50. // 打开数据库连接
  51. func (e *Mysql) Open(db *sql.DB, cfg *gorm.Config) (*gorm.DB, error) {
  52. return gorm.Open(mysql.New(mysql.Config{Conn: db}), cfg)
  53. }
  54. // 获取数据库连接
  55. func (e *Mysql) GetConnect() string {
  56. return toolsConfig.DatabaseConfig.Source
  57. }
  58. func (e *Mysql) GetDriver() string {
  59. return toolsConfig.DatabaseConfig.Driver
  60. }