Spaces:
Sleeping
Sleeping
| from __future__ import annotations | |
| from contextlib import asynccontextmanager | |
| from fastapi import FastAPI | |
| from fastapi.middleware.cors import CORSMiddleware | |
| from fastapi.staticfiles import StaticFiles | |
| from beeai.api.routes import ( | |
| global_identifications, | |
| history, | |
| health, | |
| models, | |
| predictions, | |
| species, | |
| ) | |
| from beeai.core.config import get_settings | |
| from beeai.core.logging import configure_logging | |
| from beeai.db.session import init_db | |
| async def lifespan(_: FastAPI): | |
| settings = get_settings() | |
| settings.ensure_runtime_dirs() | |
| init_db(settings) | |
| yield | |
| def create_app() -> FastAPI: | |
| settings = get_settings() | |
| settings.ensure_runtime_dirs() | |
| configure_logging(settings.debug) | |
| app = FastAPI( | |
| title=settings.project_name, | |
| version="0.1.0", | |
| lifespan=lifespan, | |
| ) | |
| app.add_middleware( | |
| CORSMiddleware, | |
| allow_origins=settings.cors_origins, | |
| allow_credentials=True, | |
| allow_methods=["GET", "POST", "PUT", "PATCH", "DELETE"], | |
| allow_headers=["Content-Type", "Accept", "Authorization"], | |
| ) | |
| app.mount( | |
| settings.uploads_serve_path, | |
| StaticFiles(directory=str(settings.upload_dir)), | |
| name="uploads", | |
| ) | |
| app.include_router(health.router, prefix=settings.api_v1_prefix) | |
| app.include_router(species.router, prefix=settings.api_v1_prefix) | |
| app.include_router(predictions.router, prefix=settings.api_v1_prefix) | |
| app.include_router(global_identifications.router, prefix=settings.api_v1_prefix) | |
| app.include_router(history.router, prefix=settings.api_v1_prefix) | |
| app.include_router(models.router, prefix=settings.api_v1_prefix) | |
| return app | |
| app = create_app() | |