66 lines
2.0 KiB
Python
66 lines
2.0 KiB
Python
from __future__ import annotations
|
|
|
|
import uvicorn
|
|
from fastapi import FastAPI
|
|
from fastapi.middleware.cors import CORSMiddleware
|
|
from mousehold_agent.server import create_router as create_agent_router
|
|
|
|
from .config import get_settings
|
|
from .db import init_db
|
|
from .routers import (
|
|
accounts,
|
|
auth,
|
|
backup,
|
|
connections,
|
|
events,
|
|
households,
|
|
observations,
|
|
projects,
|
|
reconciliation,
|
|
recurring,
|
|
settlement,
|
|
taxonomy,
|
|
)
|
|
|
|
|
|
def create_app() -> FastAPI:
|
|
settings = get_settings()
|
|
app = FastAPI(title=settings.app_name, version="0.1.0")
|
|
app.add_middleware(
|
|
CORSMiddleware,
|
|
allow_origins=settings.cors_origins,
|
|
allow_credentials=True,
|
|
allow_methods=["*"],
|
|
allow_headers=["*"],
|
|
)
|
|
|
|
@app.on_event("startup")
|
|
def startup() -> None:
|
|
init_db()
|
|
|
|
@app.get("/health")
|
|
def health() -> dict[str, str]:
|
|
return {"status": "ok"}
|
|
|
|
app.include_router(households.router, prefix=settings.api_prefix)
|
|
app.include_router(auth.router, prefix=settings.api_prefix)
|
|
app.include_router(backup.router, prefix=settings.api_prefix)
|
|
app.include_router(accounts.router, prefix=settings.api_prefix)
|
|
app.include_router(observations.router, prefix=settings.api_prefix)
|
|
app.include_router(events.router, prefix=settings.api_prefix)
|
|
app.include_router(settlement.router, prefix=settings.api_prefix)
|
|
app.include_router(reconciliation.router, prefix=settings.api_prefix)
|
|
app.include_router(projects.router, prefix=settings.api_prefix)
|
|
app.include_router(recurring.router, prefix=settings.api_prefix)
|
|
app.include_router(taxonomy.router, prefix=settings.api_prefix)
|
|
app.include_router(connections.router, prefix=settings.api_prefix)
|
|
app.include_router(create_agent_router(), prefix=f"{settings.api_prefix.rstrip('/')}/agent")
|
|
return app
|
|
|
|
|
|
app = create_app()
|
|
|
|
|
|
def run() -> None:
|
|
uvicorn.run("mousehold_api.main:app", host="127.0.0.1", port=8000, reload=True)
|