db.go 831 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. package lib
  2. import (
  3. "fmt"
  4. "gitdxz.51daxuetong.cn/go_dev/bids_rpcx/config"
  5. "gorm.io/driver/mysql"
  6. "gorm.io/gorm"
  7. "sync"
  8. "time"
  9. )
  10. var Db *gorm.DB
  11. var syncDb sync.Once
  12. func GetDb() *gorm.DB {
  13. syncDb.Do(func() {
  14. cc := config.GetConfig()
  15. dbHost := cc.String("db_host")
  16. dbPort := cc.String("db_port")
  17. dbName := cc.String("db_database")
  18. dbUser := cc.String("db_username")
  19. dbPwd := cc.String("db_password")
  20. dsn := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=utf8mb4&parseTime=True&loc=Local", dbUser, dbPwd, dbHost, dbPort, dbName)
  21. db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
  22. if err != nil {
  23. panic(err.Error() + dsn)
  24. }
  25. sqlDB, err := db.DB()
  26. if err != nil {
  27. panic(err)
  28. }
  29. sqlDB.SetMaxIdleConns(1)
  30. sqlDB.SetMaxOpenConns(5)
  31. sqlDB.SetConnMaxLifetime(time.Hour)
  32. Db = db
  33. })
  34. return Db
  35. }