package infrastructure import ( "fmt" "gogs.tyduyong.com/duyong/dy-pkg/app/options" "gorm.io/driver/postgres" "gorm.io/gorm" "gorm.io/gorm/logger" ) func InitPGSql(opts *options.PGSQLOptions) (*gorm.DB, error) { dsn := "host=%s user=%s password=%s dbname=%s sslmode=disable TimeZone=Asia/Shanghai" connStr := fmt.Sprintf(dsn, opts.Host, opts.Username, opts.Password, opts.Database) openDb, err := gorm.Open(postgres.Open(connStr), &gorm.Config{ Logger: logger.Default.LogMode(logger.Error), PrepareStmt: true, }) if err != nil { return nil, err } // 获取原始db句柄 db, err := openDb.DB() if err != nil { return nil, err } db.SetMaxOpenConns(opts.MaxOpenConnections) db.SetMaxIdleConns(opts.MaxIdleConnections) db.SetConnMaxLifetime(opts.MaxConnectionLifeTime) return openDb, nil }