pgsql.go 825 B

123456789101112131415161718192021222324252627282930313233
  1. package infrastructure
  2. import (
  3. "fmt"
  4. "gogs.tyduyong.com/duyong/dy-pkg/app/options"
  5. "gorm.io/driver/postgres"
  6. "gorm.io/gorm"
  7. "gorm.io/gorm/logger"
  8. )
  9. func InitPGSql(opts *options.PGSQLOptions) (*gorm.DB, error) {
  10. dsn := "host=%s user=%s password=%s dbname=%s sslmode=disable TimeZone=Asia/Shanghai"
  11. connStr := fmt.Sprintf(dsn, opts.Host, opts.Username, opts.Password, opts.Database)
  12. openDb, err := gorm.Open(postgres.Open(connStr), &gorm.Config{
  13. Logger: logger.Default.LogMode(logger.Error),
  14. PrepareStmt: true,
  15. })
  16. if err != nil {
  17. return nil, err
  18. }
  19. // 获取原始db句柄
  20. db, err := openDb.DB()
  21. if err != nil {
  22. return nil, err
  23. }
  24. db.SetMaxOpenConns(opts.MaxOpenConnections)
  25. db.SetMaxIdleConns(opts.MaxIdleConnections)
  26. db.SetConnMaxLifetime(opts.MaxConnectionLifeTime)
  27. return openDb, nil
  28. }