madipo2611 a5a90bed7e v0.0.1
2025-04-28 15:14:02 +03:00

37 lines
694 B
Go

package database
import (
"context"
"database/sql"
"fmt"
"time"
_ "github.com/lib/pq"
)
type Postgres struct {
db *sql.DB
}
func NewPostgres(dsn string) (*sql.DB, error) {
db, err := sql.Open("postgres", dsn)
if err != nil {
return nil, fmt.Errorf("failed to open db: %w", err)
}
// Проверяем соединение
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
defer cancel()
if err := db.PingContext(ctx); err != nil {
return nil, fmt.Errorf("failed to ping db: %w", err)
}
// Настройка пула соединений
db.SetMaxOpenConns(25)
db.SetMaxIdleConns(25)
db.SetConnMaxLifetime(5 * time.Minute)
return db, nil
}