Files
mousehold/apps/api/mousehold_api/main.py
2026-06-28 13:48:15 +02:00

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)