32 lines
575 B
Go
32 lines
575 B
Go
package postgres
|
|
|
|
import (
|
|
_ "github.com/jackc/pgx/v5/stdlib"
|
|
"github.com/jmoiron/sqlx"
|
|
"time"
|
|
)
|
|
|
|
const (
|
|
maxOpenConns = 60
|
|
connMaxLifetime = 120
|
|
maxIdleConns = 30
|
|
connMaxIdleTime = 20
|
|
)
|
|
|
|
func NewPostgresDB(dsn string) (*sqlx.DB, error) {
|
|
db, err := sqlx.Open("pgx", dsn)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
db.SetMaxOpenConns(maxOpenConns)
|
|
db.SetConnMaxLifetime(connMaxLifetime * time.Second)
|
|
db.SetMaxIdleConns(maxIdleConns)
|
|
db.SetConnMaxIdleTime(connMaxIdleTime * time.Second)
|
|
if err = db.Ping(); err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return db, nil
|
|
}
|