package db import ( "database/sql" "fmt" "log" "os" "time" _ "github.com/lib/pq" ) var PgDB *sql.DB // ConnectPostgres → PostgreSQL veritabanına bağlanır func ConnectPostgres() (*sql.DB, error) { // Bağlantı stringi (istersen .env’den oku) connStr := os.Getenv("POSTGRES_CONN") if connStr == "" { // fallback → sabit tanımlı bağlantı connStr = "host=127.0.0.1 port=5432 user=postgres password=tayitkan dbname=baggib2b sslmode=disable" //connStr = "host=172.16.0.3 port=5432 user=postgres password=tayitkan dbname=baggib2b sslmode=disable" } db, err := sql.Open("postgres", connStr) if err != nil { return nil, fmt.Errorf("PostgreSQL bağlantı hatası: %w", err) } // ======================================================= // 🔹 BAĞLANTI HAVUZU (AUDIT LOG UYUMLU) // ======================================================= db.SetMaxOpenConns(30) // audit + api paralel çalışsın db.SetMaxIdleConns(10) db.SetConnMaxLifetime(30 * time.Minute) db.SetConnMaxIdleTime(5 * time.Minute) // 🔥 uzun idle audit bağlantılarını kapat // 🔹 Test et if err = db.Ping(); err != nil { return nil, fmt.Errorf("PostgreSQL erişilemiyor: %w", err) } log.Println("✅ PostgreSQL bağlantısı başarılı!") PgDB = db return db, nil } // GetPostgresUsers → test amaçlı ilk 5 kullanıcıyı listeler func GetPostgresUsers(db *sql.DB) error { query := `SELECT id, code, email FROM mk_dfusr ORDER BY id LIMIT 5` rows, err := db.Query(query) if err != nil { return fmt.Errorf("PostgreSQL sorgu hatası: %w", err) } defer rows.Close() fmt.Println("📋 İlk 5 PostgreSQL kullanıcısı:") for rows.Next() { var id int var code, email string if err := rows.Scan(&id, &code, &email); err != nil { return err } fmt.Printf(" ➜ ID: %-4d | USER: %-20s | EMAIL: %s\n", id, code, email) } return rows.Err() }