#!/usr/bin/env python3
"""
外部スクリプトからDBコンテナに接続するサンプル
"""
import os
import psycopg2
from psycopg2.extras import DictCursor

# 環境変数から接続情報を取得
DB_CONFIG = {
    'host': os.getenv('PG_HOST', 'localhost'),
    'port': os.getenv('PG_PORT', '5432'),
    'database': os.getenv('POSTGRES_DBNAME', 'rogdb'),
    'user': os.getenv('POSTGRES_USER', 'admin'),
    'password': os.getenv('POSTGRES_PASS', 'admin123456')
}

def connect_to_db():
    """データベースに接続"""
    try:
        conn = psycopg2.connect(**DB_CONFIG)
        print(f"✅ データベースに接続成功: {DB_CONFIG['host']}:{DB_CONFIG['port']}")
        return conn
    except psycopg2.Error as e:
        print(f"❌ データベース接続エラー: {e}")
        return None

def test_connection():
    """接続テスト"""
    conn = connect_to_db()
    if conn:
        try:
            with conn.cursor(cursor_factory=DictCursor) as cur:
                cur.execute("SELECT version();")
                version = cur.fetchone()
                print(f"PostgreSQL バージョン: {version[0]}")
                
                # テーブル一覧を取得
                cur.execute("""
                    SELECT tablename FROM pg_tables 
                    WHERE schemaname = 'public' 
                    ORDER BY tablename;
                """)
                tables = cur.fetchall()
                print(f"テーブル数: {len(tables)}")
                for table in tables[:5]:  # 最初の5個を表示
                    print(f"  - {table[0]}")
                
        except psycopg2.Error as e:
            print(f"❌ クエリ実行エラー: {e}")
        finally:
            conn.close()

if __name__ == "__main__":
    print("=== データベース接続テスト ===")
    print(f"接続先: {DB_CONFIG['host']}:{DB_CONFIG['port']}")
    print(f"データベース: {DB_CONFIG['database']}")
    print(f"ユーザー: {DB_CONFIG['user']}")
    test_connection()
