package database import ( "database/sql" "fmt" "producer/pkg/utils" "time" "github.com/joho/godotenv" _ "github.com/lib/pq" ) // ConnectDB establece la conexión con la base de datos func ConnectDB() (*sql.DB, error) { _ = godotenv.Load() dsn := fmt.Sprintf( "host=%s user=%s password=%s dbname=%s port=%s sslmode=disable", utils.GetEnv("DB_HOST", "localhost"), utils.GetEnv("DB_USER", "postgres"), utils.GetEnv("DB_PASSWORD", "postgres"), utils.GetEnv("DB_NAME", "postgres"), utils.GetEnv("DB_PORT", "5432"), ) db, err := sql.Open("postgres", dsn) if err != nil { return nil, fmt.Errorf("error conectando a la base de datos: %w", err) } if err = db.Ping(); err != nil { return nil, fmt.Errorf("error verificando conexión a la base de datos: %w", err) } db.SetMaxOpenConns(utils.GetEnvInt("DB_MAX_OPEN_CONNS", 10)) db.SetMaxIdleConns(utils.GetEnvInt("DB_MAX_IDLE_CONNS", 5)) db.SetConnMaxLifetime(utils.GetEnvDuration("DB_CONN_MAX_LIFETIME", 1*time.Hour)) return db, nil }