from flask import Flask
from app.extensions import swagger, limiter
from config import config_by_name
import logging
import os

def create_app(config_name='default'):
    """Application factory"""
    app = Flask(__name__)
    
    # Load config
    app.config.from_object(config_by_name[config_name])
    
    # Initialize extensions
    swagger.init_app(app)
    limiter.init_app(app)
    
    # Register blueprints
    from app.routes.comic_routes import comic_bp
    app.register_blueprint(comic_bp)
    
    # Configure logging
    if not app.debug:
        handler = logging.StreamHandler()
        handler.setLevel(logging.INFO)
        formatter = logging.Formatter(
            '%(asctime)s - %(name)s - %(levelname)s - %(message)s'
        )
        handler.setFormatter(formatter)
        app.logger.addHandler(handler)
        app.logger.setLevel(logging.INFO)
    
    return app