"""
Create system_settings table for registration toggle and other site-wide settings.
Run with: python migrations/add_system_settings_table.py
"""
import sys
import os

# Add the parent directory to the path so we can import from app
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))

from app.extensions import db
from app import create_app

def migrate():
    """Create system_settings table and add default registration_enabled setting."""
    app = create_app()

    with app.app_context():
        # Check if table exists
        inspector = db.inspect(db.engine)
        if 'system_settings' in inspector.get_table_names():
            print("✓ Table 'system_settings' already exists")
        else:
            # Create the table
            db.create_all()
            print("✓ Created 'system_settings' table")

        # Check if registration_enabled setting exists
        from app.models.features import SystemSetting
        existing = SystemSetting.query.filter_by(key="registration_enabled").first()

        if existing:
            print(f"✓ Setting 'registration_enabled' already exists (value={existing.value})")
        else:
            # Create default setting
            setting = SystemSetting(
                key="registration_enabled",
                value=True,
                description="Enable/disable new user registration",
                updated_by=None
            )
            db.session.add(setting)
            db.session.commit()
            print("✓ Created 'registration_enabled' setting (default: True)")

        print("\n✅ Migration completed successfully!")
        print("   - Super admins can now toggle registration from /admin")
        print("   - Registration is ENABLED by default")

if __name__ == "__main__":
    migrate()
