Spaces:
Sleeping
Sleeping
File size: 1,702 Bytes
cc4ea58 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
import logging
from fastapi import APIRouter, FastAPI
from fastapi.middleware.cors import CORSMiddleware
from fastapi.routing import APIRoute
from api.config import settings
from api.endpoints.v1.api import api_router
info_router = APIRouter()
@info_router.get("/", status_code=200, include_in_schema=False)
async def info():
return [{"Status": "API Running"}]
@info_router.get("/health", status_code=200, tags=["health"])
async def health_check():
"""Health check endpoint for Railway deployment"""
return {"status": "healthy", "service": "ubumuntu-api"}
def custom_generate_unique_id(route: APIRoute):
"""Generates a custom ID when using the TypeScript Generator Client
Args:
route (APIRoute): The route to be customised
Returns:
str: tag-route_name, e.g. items-CreateItem
"""
return f"{route.tags[0]}-{route.name}"
def get_application():
_app = FastAPI(
title=settings.PROJECT_NAME,
description=settings.PROJECT_DESCRIPTION,
generate_unique_id_function=custom_generate_unique_id,
root_path=settings.ROOT,
root_path_in_servers=True,
openapi_url=settings.openapi_url,
)
# Allow all origins for demo - in production, restrict to specific domains
logger = logging.getLogger("uvicorn")
logger.info("Enabling CORS for all origins (demo mode)")
_app.add_middleware(
CORSMiddleware,
allow_origins=["*"],
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
_app.include_router(api_router, prefix=settings.API_VERSION)
_app.include_router(info_router, tags=[""])
return _app
app = get_application()
|