Transfer first library files
This commit is contained in:
+54
@@ -0,0 +1,54 @@
|
||||
package ersteller_lib
|
||||
|
||||
import (
|
||||
"context"
|
||||
"github.com/jackc/pgx/v5/pgxpool"
|
||||
"time"
|
||||
)
|
||||
|
||||
func CreatePostgresConnpool(dbUrl string) (*pgxpool.Pool, error) {
|
||||
connPool, err := pgxpool.NewWithConfig(context.Background(), config(dbUrl))
|
||||
if err != nil {
|
||||
Error("Error while creating connection to the database!!", err)
|
||||
return nil, err
|
||||
}
|
||||
|
||||
connection, err := connPool.Acquire(context.Background())
|
||||
if err != nil {
|
||||
LogError("Error while acquiring connection from the database pool!! %v", err)
|
||||
return nil, err
|
||||
}
|
||||
defer connection.Release()
|
||||
|
||||
err = connection.Ping(context.Background())
|
||||
if err != nil {
|
||||
LogError("Could not ping database")
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return connPool, nil
|
||||
}
|
||||
|
||||
func config(dbUrl string) *pgxpool.Config {
|
||||
const defaultMaxConns = int32(4)
|
||||
const defaultMinConns = int32(0)
|
||||
const defaultMaxConnLifetime = time.Hour
|
||||
const defaultMaxConnIdleTime = time.Minute * 30
|
||||
const defaultHealthCheckPeriod = time.Minute
|
||||
const defaultConnectTimeout = time.Second * 5
|
||||
|
||||
dbConfig, err := pgxpool.ParseConfig(dbUrl)
|
||||
if err != nil {
|
||||
Error("Failed to create a config, error: ", err)
|
||||
return nil
|
||||
}
|
||||
|
||||
dbConfig.MaxConns = defaultMaxConns
|
||||
dbConfig.MinConns = defaultMinConns
|
||||
dbConfig.MaxConnLifetime = defaultMaxConnLifetime
|
||||
dbConfig.MaxConnIdleTime = defaultMaxConnIdleTime
|
||||
dbConfig.HealthCheckPeriod = defaultHealthCheckPeriod
|
||||
dbConfig.ConnConfig.ConnectTimeout = defaultConnectTimeout
|
||||
|
||||
return dbConfig
|
||||
}
|
||||
Reference in New Issue
Block a user