"""
Wakelai Voice AI SaaS Platform
Main application entry point
"""
import os
import sys
from dotenv import load_dotenv

# Load environment variables
load_dotenv()

# Add project root to Python path
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))

from app import create_app, db
from app.models import User, Instance, Conversation, UsageRecord, OAuthState

# Create Flask app
app = create_app(os.getenv('FLASK_ENV', 'development'))


@app.shell_context_processor
def make_shell_context():
    """Make objects available in Flask shell"""
    return {
        'db': db,
        'User': User,
        'Instance': Instance,
        'Conversation': Conversation,
        'UsageRecord': UsageRecord,
        'OAuthState': OAuthState
    }


@app.cli.command()
def init_db():
    """Initialize the database"""
    db.create_all()
    print('Database initialized.')


@app.cli.command()
def create_admin():
    """Create an admin user"""
    email = input('Admin email: ')
    username = input('Admin username: ')
    password = input('Admin password: ')

    admin = User(
        email=email,
        username=username,
        is_admin=True,
        is_active=True,
        subscription_tier='scale'
    )
    admin.set_password(password)

    db.session.add(admin)
    db.session.commit()

    print(f'Admin user {username} created successfully.')


if __name__ == '__main__':
    # Run development server
    app.run(
        host=app.config.get('SERVER_HOST', '0.0.0.0'),
        port=app.config.get('SERVER_PORT', 4000),
        debug=app.config.get('DEBUG', True)
    )
