Files
golang-api-starter/internal/database/postgres.go
2025-11-29 16:59:02 -06:00

42 lines
695 B
Go

package database
import (
"database/sql"
"fmt"
"time"
_ "github.com/lib/pq"
)
type Config struct {
Host string
Port int
User string
Password string
DBName string
}
func NewConnection(cfg Config) (*sql.DB, error) {
dsn := fmt.Sprintf(
"host=%s port=%d user=%s password=%s dbname=%s sslmode=disable",
cfg.Host, cfg.Port, cfg.User, cfg.Password, cfg.DBName,
)
db, err := sql.Open("postgres", dsn)
if err != nil {
return nil, err
}
// Connection pooling
db.SetMaxOpenConns(25)
db.SetMaxOpenConns(5)
db.SetConnMaxLifetime(5 * time.Minute)
db.SetConnMaxIdleTime(10 * time.Minute)
if err := db.Ping(); err != nil {
return nil, err
}
return db, nil
}