#!/usr/bin/env python3
"""opening_balances テーブルのデータ確認スクリプト"""
import psycopg

print("="*60)
print("【opening_balances テーブルデータ確認】")
print("="*60)

try:
    conn = psycopg.connect('host=localhost user=postgres password=postgres dbname=accounting')
    cur = conn.cursor()
    
    # 1. テーブル自体の存在確認
    cur.execute("""
        SELECT EXISTS (
            SELECT 1 FROM information_schema.tables 
            WHERE table_name = 'opening_balances'
        )
    """)
    table_exists = cur.fetchone()[0]
    print(f"\n1️⃣  opening_balances テーブルの存在: {'✓ 存在' if table_exists else '❌ 存在しない'}")
    
    if not table_exists:
        print("   → テーブルを作成する必要があります")
        cur.close()
        conn.close()
        exit(1)
    
    # 2. 全行数
    cur.execute("SELECT COUNT(*) FROM opening_balances")
    total_count = cur.fetchone()[0]
    print(f"\n2️⃣  全体の行数: {total_count}")
    
    if total_count == 0:
        print("   ⚠️  opening_balances テーブルは空です")
    else:
        # 3. 年度別統計
        cur.execute("""
            SELECT fiscal_year, COUNT(*) as cnt 
            FROM opening_balances 
            GROUP BY fiscal_year 
            ORDER BY fiscal_year DESC
        """)
        print(f"\n3️⃣  年度別件数:")
        for row in cur.fetchall():
            print(f"   - {row[0]}年度: {row[1]}件")
        
        # 4. 2025年度のデータ最初の5件
        print(f"\n4️⃣  2025年度のサンプルデータ（最初の5件）:")
        cur.execute("""
            SELECT a.account_code, a.account_name, o.opening_debit, o.opening_credit
            FROM opening_balances o
            JOIN accounts a ON a.account_id = o.account_id
            WHERE o.fiscal_year = 2025
            LIMIT 5
        """)
        rows = cur.fetchall()
        if rows:
            for row in rows:
                print(f"   {row[0]:3s} {row[1]:20s} 借方:{row[2]:>12} 貸方:{row[3]:>12}")
        else:
            print("   → 2025年度のデータがありません")
    
    cur.close()
    conn.close()
    
    print("\n" + "="*60)
    
except Exception as e:
    print(f"\n❌ エラー: {e}")
    import traceback
    traceback.print_exc()
