from contextlib import asynccontextmanager from fastapi import FastAPI from .db import init_db, stop_db from .user import user_router, get_auth_router from .entity import entity_router from .template import template_router from .contract import contract_router @asynccontextmanager async def lifespan(app: FastAPI): await init_db() yield await stop_db() app = FastAPI(root_path="/api/v1", lifespan=lifespan) app.include_router(get_auth_router(), prefix="/auth", tags=["auth"], ) app.include_router(user_router, prefix="/users", tags=["users"], ) multitenant_prefix = "/{instance}/{firm}" app.include_router(entity_router, prefix=f"{multitenant_prefix}/entity", tags=["entity"], ) app.include_router(template_router, prefix=f"{multitenant_prefix}/template", tags=["template"], ) app.include_router(contract_router, prefix=f"{multitenant_prefix}/contract", tags=["contract"], ) if __name__ == '__main__': import uvicorn uvicorn.run("main:app", host='0.0.0.0', port=8000, reload=True)