# app/main.py
import time
from fastapi import FastAPI, Depends, Request
from fastapi.middleware.cors import CORSMiddleware

from app.config import settings
from app.logger import logger
# Импортируем наш новый модуль с роутером
from app.notes.router import router as notes_router
from app.users.auth import get_current_user
from app.users.model import Users
from app.users.router import router as users_router

app = FastAPI(
				title="Рабочие инструменты API",
				version="0.1.0",
				root_path="/api",
			)

# Подключаем роутер к главному приложению.
# Это похоже на подключение плагина.
app.include_router(notes_router)
app.include_router(users_router)
origins = ['http://localhost:5000','http://10.126.30.77:5000']

app.add_middleware(
    CORSMiddleware,
    allow_origins=origins,
    allow_credentials=True,
    allow_methods=["GET", "POST", "OPTIONS", "DELETE", "PATCH", "PUT"],
    allow_headers=["Content-Type", "Set-Cookie", "Access-Control-Allow-Headers",
                   "Access-Control-Allow-Origin",
                   "Authorization"],
)

@app.get("/")
async def root(user: Users = Depends(get_current_user)):
    if user is None:
        return None
    elif user != settings.ADMIN_NAME:
        return None
    else:
        return {"mess": "Главная страница", "message": "ЗАКРЫТАЯ"}

@app.middleware("http")
async def add_process_time_header(request: Request, call_next):
    start_time = time.perf_counter()
    response = await call_next(request)
    process_time = time.perf_counter() - start_time
    response.headers["X-Process-Time"] = str(process_time)
    logger.info("Request time", extra={
        "process_time": round(process_time, 4)
    })
    return response