This repository has been archived on 2025-05-04 . You can view files and clone it. You cannot open issues or pull requests or push a commit.
				
			
		
		
		
			
				
					
						
					
					5512a41d0227620200e3b7e6a637b22dd5056d05
				
			
			
		
	micro-wrapper-sqlpackage postgres
Example for For postgres
import (
	"fmt"
	"net/url"
	"time"
	"github.com/jackc/pgx/v4"
	"github.com/jackc/pgx/v4/stdlib"
	"github.com/jmoiron/sqlx"
)
func Connect(cfg *PostgresConfig) (*sqlx.DB, error) {
	// format connection string
	dbstr := fmt.Sprintf(
		"postgres://%s:%s@%s/%s?sslmode=disable&statement_cache_mode=describe",
		cfg.Login,
		url.QueryEscape(cfg.Passw),
		cfg.Addr,
		cfg.DBName,
	)
	// parse connection string
	dbConf, err := pgx.ParseConfig(dbstr)
	if err != nil {
		return nil, err
	}
	// needed for pgbouncer
	dbConf.RuntimeParams = map[string]string{
		"standard_conforming_strings": "on",
		"application_name":            cfg.AppName,
	}
	// may be needed for pbbouncer, needs to check
	//dbConf.PreferSimpleProtocol = true
	// register pgx conn
	connStr := stdlib.RegisterConnConfig(dbConf)
	db, err := sqlx.Connect("pgx", connStr)
	if err != nil {
		return nil, err
	}
	db.SetMaxOpenConns(int(cfg.ConnMax))
	db.SetMaxIdleConns(int(cfg.ConnMax / 2))
	db.SetConnMaxLifetime(time.Duration(cfg.ConnLifetime) * time.Second)
	db.SetConnMaxIdleTime(time.Duration(cfg.ConnMaxIdleTime) * time.Second)
	return db, nil
}
Description
				
								v4.1.1
								
	Latest
							
						
					Languages
				
				
								
								
									Go
								
								100%