Transfer first library files

This commit is contained in:
Achim Rohn
2025-07-27 17:53:07 +02:00
parent e187673510
commit 728cf90236
7 changed files with 196 additions and 0 deletions
+54
View File
@@ -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
}