"""
Migration script to add user suspension and deletion fields.
"""
import sys
import os as os_module

from sqlalchemy import text, create_engine, inspect

# Database URL from environment or default
DATABASE_URL = os_module.getenv('DATABASE_URL', 'postgresql://postgres@/jadwa')

def migrate():
    """Run the migration."""
    engine = create_engine(DATABASE_URL)

    with engine.connect() as conn:
        print("Adding user suspension and deletion fields...")

        inspector = inspect(engine)
        columns = [col['name'] for col in inspector.get_columns('users')]

        # Add is_suspended if not exists
        if 'is_suspended' not in columns:
            conn.execute(text("ALTER TABLE users ADD COLUMN is_suspended BOOLEAN DEFAULT FALSE"))
            print("✓ Added is_suspended column")

        # Add suspended_at if not exists
        if 'suspended_at' not in columns:
            conn.execute(text("ALTER TABLE users ADD COLUMN suspended_at TIMESTAMP"))
            print("✓ Added suspended_at column")

        # Add suspended_by_id if not exists
        if 'suspended_by_id' not in columns:
            conn.execute(text("ALTER TABLE users ADD COLUMN suspended_by_id INTEGER REFERENCES users(id)"))
            print("✓ Added suspended_by_id column")

        # Add suspension_reason if not exists
        if 'suspension_reason' not in columns:
            conn.execute(text("ALTER TABLE users ADD COLUMN suspension_reason TEXT"))
            print("✓ Added suspension_reason column")

        # Add deleted_at if not exists
        if 'deleted_at' not in columns:
            conn.execute(text("ALTER TABLE users ADD COLUMN deleted_at TIMESTAMP"))
            print("✓ Added deleted_at column")

        # Add deleted_by_id if not exists
        if 'deleted_by_id' not in columns:
            conn.execute(text("ALTER TABLE users ADD COLUMN deleted_by_id INTEGER REFERENCES users(id)"))
            print("✓ Added deleted_by_id column")

        conn.commit()

    print("\nMigration completed successfully!")


if __name__ == "__main__":
    migrate()
