dao.go 989 B

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. package dao
  2. import (
  3. "time"
  4. "gorm.io/driver/mysql"
  5. "gorm.io/gorm"
  6. "gorm.io/gorm/schema"
  7. "kpt.notice/apiserver/config"
  8. "kpt.notice/pkg/log"
  9. )
  10. type Dao struct {
  11. DB *gorm.DB
  12. }
  13. func New(c *config.Config) (d *Dao) {
  14. // dsn := "root:kepaiteng!QAZ@tcp(222.73.129.15:31306)/notice?charset=utf8&parseTime=True&loc=Local"
  15. db, err := gorm.Open(mysql.Open(c.DB.DSN),
  16. // db, err := gorm.Open(mysql.Open(dsn),
  17. &gorm.Config{
  18. NamingStrategy: schema.NamingStrategy{
  19. SingularTable: true,
  20. },
  21. })
  22. if err != nil || db == nil {
  23. log.Errorf("gorm.Open error: %v===%v", err, c.DB.DSN)
  24. return nil
  25. }
  26. sqlDB, _ := db.DB()
  27. // SetMaxOpenConns 设置打开数据库连接的最大数量。
  28. sqlDB.SetMaxOpenConns(c.DB.Active)
  29. // SetMaxIdleConns 设置空闲连接池中连接的最大数量
  30. sqlDB.SetMaxIdleConns(c.DB.Idle)
  31. // SetConnMaxLifetime 设置了连接可复用的最大时间。
  32. sqlDB.SetConnMaxLifetime(c.DB.IdleTimeout * time.Second)
  33. d = &Dao{
  34. DB: db,
  35. }
  36. return
  37. }