#!/usr/bin/env python3
"""Check migrations for potential issues with NOT NULL columns without defaults."""

import os
import re
from pathlib import Path

def check_migrations():
    """Check all migration files for potential issues."""
    migrations_dir = Path("migrations/versions")
    issues_found = []
    
    for migration_file in migrations_dir.glob("*.py"):
        if migration_file.name == "__pycache__":
            continue
            
        with open(migration_file, 'r', encoding='utf-8') as f:
            content = f.read()
            
        # Look for nullable=False without server_default
        nullable_false_pattern = r"nullable=False(?![^)]*server_default)"
        matches = re.findall(nullable_false_pattern, content)
        
        if matches:
            # Check if it's in an add_column operation
            add_column_pattern = r"add_column\([^)]*nullable=False(?![^)]*server_default)"
            add_matches = re.findall(add_column_pattern, content)
            
            if add_matches:
                issues_found.append({
                    'file': migration_file.name,
                    'issue': f'Found {len(add_matches)} add_column operations with nullable=False but no server_default'
                })
    
    return issues_found

if __name__ == "__main__":
    print("Checking migrations for potential issues...")
    issues = check_migrations()
    
    if issues:
        print("\n⚠️  Potential issues found:")
        for issue in issues:
            print(f"  - {issue['file']}: {issue['issue']}")
    else:
        print("✅ No issues found in migrations!")
    
    print("\nMigration files checked:")
    migrations_dir = Path("migrations/versions")
    for migration_file in sorted(migrations_dir.glob("*.py")):
        if migration_file.name != "__pycache__":
            print(f"  - {migration_file.name}")
