gidb-server/main.py

47 lines
1.3 KiB
Python

from fastapi import FastAPI
from fastapi.openapi.utils import get_openapi
from fastapi.responses import JSONResponse
from src.errors import Response, NOT_FOUND
from src.routes.achievements import achievements
from src.routes.adventureranks import adventure_ranks
from src.routes.elements import elements
from src.routes.characters import characters
app = FastAPI(title='Genshin Impact DB')
@app.exception_handler(404)
async def not_found(r, e):
return JSONResponse(
status_code=404,
content=Response(error=True, response=NOT_FOUND).model_dump()
)
app.include_router(achievements)
app.include_router(adventure_ranks)
app.include_router(characters)
app.include_router(elements)
def custom_openapi():
if app.openapi_schema:
return app.openapi_schema
openapi_schema = get_openapi(
title="Genshin Impact DB",
version="4.2.0",
summary="This is a very custom OpenAPI schema",
description="Here's a longer description of the custom **OpenAPI** schema",
routes=app.routes
)
openapi_schema["info"]["x-logo"] = {
"url": "https://upload.wikimedia.org/wikipedia/en/thumb/5/5d/Genshin_Impact_logo.svg/2560px-Genshin_Impact_logo.svg.png"
}
app.openapi_schema = openapi_schema
return app.openapi_schema
app.openapi = custom_openapi