package database import ( "context" "fmt" "github.com/jackc/pgx/v5/pgxpool" "github.com/rs/zerolog/log" ) func Connect(databaseURL string) (*pgxpool.Pool, error) { config, err := pgxpool.ParseConfig(databaseURL) if err != nil { return nil, fmt.Errorf("unable to parse database URL: %w", err) } // Set pool settings // config.MaxConns = 25 // config.MinConns = 2 pool, err := pgxpool.NewWithConfig(context.Background(), config) if err != nil { return nil, fmt.Errorf("unable to create connection pool: %w", err) } // Ping the database to verify connection if err := pool.Ping(context.Background()); err != nil { return nil, fmt.Errorf("unable to connect to database: %w", err) } log.Info().Msg("Successfully connected to database") return pool, nil }