#!/usr/bin/env python
"""
マイグレーション履歴リセットスクリプト
rogアプリのマイグレーション履歴をクリアして、新しいシンプルマイグレーションを適用
"""

import os
import sys
import django
from django.core.management import execute_from_command_line

if __name__ == '__main__':
    os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'config.settings')
    django.setup()
    
    from django.db import connection
    from django.core.management.color import no_style
    
    print("=== マイグレーション履歴のクリア ===")
    
    # データベース接続を取得
    cursor = connection.cursor()
    
    try:
        # rogアプリのマイグレーション履歴をクリア
        print("rogアプリのマイグレーション履歴を削除中...")
        cursor.execute("DELETE FROM django_migrations WHERE app = 'rog';")
        
        print("✅ rogアプリのマイグレーション履歴を削除しました")
        
        # コミット
        connection.commit()
        
        print("\n=== マイグレーション状態確認 ===")
        # マイグレーション状態を確認
        execute_from_command_line(['manage.py', 'showmigrations', 'rog'])
        
        print("\n=== 新しいマイグレーションを偽装適用 ===")
        # 依存関係チェックを無視してマイグレーションを偽装適用
        try:
            # まず --run-syncdb で既存のテーブル構造を認識させる
            execute_from_command_line(['manage.py', 'migrate', '--run-syncdb'])
        except Exception as sync_error:
            print(f"syncdb エラー（継続）: {sync_error}")
        
        # マイグレーション履歴に直接レコードを挿入
        print("マイグレーション履歴を直接挿入中...")
        # 新しいカーソルを作成
        with connection.cursor() as new_cursor:
            new_cursor.execute("""
                INSERT INTO django_migrations (app, name, applied) 
                VALUES ('rog', '0001_simple_initial', NOW())
                ON CONFLICT DO NOTHING;
            """)
            connection.commit()
        print("✅ マイグレーション履歴を挿入しました")
        
        print("\n=== 最終確認 ===")
        # 最終確認
        execute_from_command_line(['manage.py', 'showmigrations'])
        
    except Exception as e:
        print(f"❌ エラーが発生しました: {e}")
        connection.rollback()
    finally:
        cursor.close()
