# --- START OF FILE server.py ---

from aiohttp import web
import logging
import os
import sys
from datetime import datetime

from database import init_db
from middlewares import admin_auth_middleware
from routes import setup_routes

def setup_logging():
    os.makedirs("logs", exist_ok=True)
    log_format = "%(asctime)s [%(levelname)s] %(message)s"
    logging.basicConfig(
        level=logging.INFO,
        format=log_format,
        handlers=[
            logging.FileHandler(f"logs/server_{datetime.now().date()}.log"),
            logging.StreamHandler(sys.stdout)
        ]
    )
    return logging.getLogger("server")

logger = setup_logging()

OPENAI_API_KEY = "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"
ADMIN_API_KEY = "13542"

async def init_db_on_startup(app):
    logger.info("Инициализация базы данных...")
    await init_db()

# !!! ИЗМЕНЕНИЕ: Создаем асинхронную функцию для инициализации приложения !!!
async def create_app():
    app = web.Application(middlewares=[admin_auth_middleware]) # cors_middleware больше не нужен, Nginx будет его заменять

    app["OPENAI_API_KEY"] = OPENAI_API_KEY
    app["ADMIN_API_KEY"] = ADMIN_API_KEY

    setup_routes(app)
    PROJ_ROOT = os.path.dirname(os.path.abspath(__file__))
    app.router.add_static("/", path=PROJ_ROOT, show_index=True)
    app.on_startup.append(init_db_on_startup)

    logger.info("Приложение успешно сконфигурировано.")
    return app

# !!! ИЗМЕНЕНИЕ: Убираем прямой запуск, Gunicorn будет делать это сам !!!
if __name__ == "__main__":
    # Этот блок теперь используется только для локального запуска без Docker
    app = create_app()
    web.run_app(app, port=8000, access_log=None)

# --- END OF FILE server.py ---