Files
dttmr-api/internal/database/db.go
T

30 lines
554 B
Go

package database
import (
"context"
"database/sql"
"fmt"
"time"
_ "github.com/jackc/pgx/v5/stdlib"
)
func New(ctx context.Context, connURL string) (*sql.DB, error) {
db, err := sql.Open("pgx", connURL)
if err != nil {
return nil, fmt.Errorf("failed to connect to database: %w", err)
}
db.SetMaxOpenConns(10)
db.SetMaxIdleConns(10)
db.SetConnMaxLifetime(5 * time.Minute)
db.SetConnMaxIdleTime(5 * time.Minute)
if err := db.PingContext(ctx); err != nil {
return nil, fmt.Errorf("database unreachable: %w", err)
}
return db, nil
}