47 lines
1.3 KiB
Python
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
|