
from fastapi import FastAPI, APIRouter, Depends, HTTPException, Request
from fastapi.exceptions import RequestValidationError
from fastapi.responses import JSONResponse
# Custom validation error handler

async def custom_validation_exception_handler(request: Request, exc: RequestValidationError):
    errors = [
        {
            "field": ".".join(str(loc) for loc in error["loc"]),
            "message": error["msg"],
            "type": error["type"],
        }
        for error in exc.errors()
    ]
    
    return JSONResponse(
        status_code=400,
        content={
            "status": 400,
            "message": errors[0]['message'],
            "field": errors[0]['field']
        },
    )

async def custom_http_exception_handler(request, exc: HTTPException):
    if exc.status_code == 403 and exc.detail == "Not authenticated":
        return JSONResponse(
            status_code=401,
            content={"status": 401, "message": "Missing API Token"},
        )
    return JSONResponse(
        status_code=exc.status_code,
        content={"status": exc.status_code, "message": exc.detail}
    )