package database import ( "context" "fmt" "log/slog" "github.com/jackc/pgx/v5/pgxpool" "marktvogt.de/backend/internal/config" ) func NewPostgres(ctx context.Context, cfg config.DBConfig) (*pgxpool.Pool, error) { poolCfg, err := pgxpool.ParseConfig(cfg.DSN()) if err != nil { return nil, fmt.Errorf("parsing postgres config: %w", err) } poolCfg.MaxConns = int32(cfg.MaxConns) poolCfg.MinConns = int32(cfg.MinConns) pool, err := pgxpool.NewWithConfig(ctx, poolCfg) if err != nil { return nil, fmt.Errorf("creating postgres pool: %w", err) } if err := pool.Ping(ctx); err != nil { pool.Close() return nil, fmt.Errorf("pinging postgres: %w", err) } slog.Info("connected to postgres", "host", cfg.Host, "port", cfg.Port, "db", cfg.Name) return pool, nil }