Skip to content

Commit e44aab0

Browse files
perf: Add API documentation toggle control
1 parent 936bb5d commit e44aab0

2 files changed

Lines changed: 22 additions & 19 deletions

File tree

backend/common/core/config.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,8 @@ def API_V1_STR(self) -> str:
7575
SCRIPT_DIR: str = f"{BASE_DIR}/scripts"
7676
UPLOAD_DIR: str = "/opt/sqlbot/data/file"
7777
SQLBOT_KEY_EXPIRED: int = 100 # License key expiration timestamp, 0 means no expiration
78+
79+
SQLBOT_DOC_ENABLED: bool = True
7880

7981
@computed_field # type: ignore[prop-decorator]
8082
@property

backend/main.py

Lines changed: 20 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ def custom_generate_unique_id(route: APIRoute) -> str:
7070

7171
app = FastAPI(
7272
title=settings.PROJECT_NAME,
73-
openapi_url=f"{settings.CONTEXT_PATH}/openapi.json",
73+
openapi_url=f"{settings.CONTEXT_PATH}/openapi.json" if settings.SQLBOT_DOC_ENABLED else None,
7474
generate_unique_id_function=custom_generate_unique_id,
7575
lifespan=lifespan,
7676
docs_url=None,
@@ -152,24 +152,25 @@ def generate_openapi_for_lang(lang: str) -> Dict[str, Any]:
152152

153153

154154
# custom /openapi.json and /docs
155-
@app.get(f"{settings.CONTEXT_PATH}/openapi.json", include_in_schema=False)
156-
async def custom_openapi(request: Request):
157-
lang = get_language_from_request(request)
158-
schema = generate_openapi_for_lang(lang)
159-
return JSONResponse(schema)
160-
161-
162-
@app.get(f"{settings.CONTEXT_PATH}/docs", include_in_schema=False)
163-
async def custom_swagger_ui(request: Request):
164-
lang = get_language_from_request(request)
165-
from fastapi.openapi.docs import get_swagger_ui_html
166-
return get_swagger_ui_html(
167-
openapi_url=f"./openapi.json?lang={lang}",
168-
title="SQLBot API Docs",
169-
swagger_favicon_url="https://fastapi.tiangolo.com/img/favicon.png",
170-
swagger_js_url="./swagger-ui-bundle.js",
171-
swagger_css_url="./swagger-ui.css",
172-
)
155+
if settings.SQLBOT_DOC_ENABLED:
156+
@app.get(f"{settings.CONTEXT_PATH}/openapi.json", include_in_schema=False)
157+
async def custom_openapi(request: Request):
158+
lang = get_language_from_request(request)
159+
schema = generate_openapi_for_lang(lang)
160+
return JSONResponse(schema)
161+
162+
163+
@app.get(f"{settings.CONTEXT_PATH}/docs", include_in_schema=False)
164+
async def custom_swagger_ui(request: Request):
165+
lang = get_language_from_request(request)
166+
from fastapi.openapi.docs import get_swagger_ui_html
167+
return get_swagger_ui_html(
168+
openapi_url=f"./openapi.json?lang={lang}",
169+
title="SQLBot API Docs",
170+
swagger_favicon_url="https://fastapi.tiangolo.com/img/favicon.png",
171+
swagger_js_url="./swagger-ui-bundle.js",
172+
swagger_css_url="./swagger-ui.css",
173+
)
173174

174175

175176
mcp_app = FastAPI()

0 commit comments

Comments
 (0)