51 lines
2.1 KiB
Python
51 lines
2.1 KiB
Python
from __future__ import annotations
|
|
|
|
from fastapi import FastAPI
|
|
|
|
|
|
def register_integration_routes(
|
|
app: FastAPI,
|
|
*,
|
|
import_integration_sources,
|
|
fetch_integration_summary,
|
|
fetch_project_metrics,
|
|
fetch_member_metrics,
|
|
fetch_team_metrics,
|
|
fetch_project_breakdowns,
|
|
fetch_payment_source_rows,
|
|
fetch_mh_source_rows,
|
|
) -> None:
|
|
@app.post("/api/integration/import")
|
|
def import_integration_data() -> dict[str, object]:
|
|
return import_integration_sources()
|
|
|
|
@app.get("/api/integration/summary")
|
|
def integration_summary() -> dict[str, object]:
|
|
return fetch_integration_summary()
|
|
|
|
@app.get("/api/integration/projects")
|
|
def integration_projects(limit: int = 500, start_date: str | None = None, end_date: str | None = None) -> dict[str, list[dict[str, object]]]:
|
|
safe_limit = max(1, min(limit, 5000))
|
|
return {"items": fetch_project_metrics(safe_limit, start_date=start_date, end_date=end_date)}
|
|
|
|
@app.get("/api/integration/members")
|
|
def integration_members(limit: int = 500, start_date: str | None = None, end_date: str | None = None) -> dict[str, list[dict[str, object]]]:
|
|
safe_limit = max(1, min(limit, 5000))
|
|
return {"items": fetch_member_metrics(safe_limit, start_date=start_date, end_date=end_date)}
|
|
|
|
@app.get("/api/integration/teams")
|
|
def integration_teams(start_date: str | None = None, end_date: str | None = None) -> dict[str, list[dict[str, object]]]:
|
|
return {"items": fetch_team_metrics(start_date=start_date, end_date=end_date)}
|
|
|
|
@app.get("/api/integration/project-breakdowns")
|
|
def integration_project_breakdowns(start_date: str | None = None, end_date: str | None = None) -> dict[str, list[dict[str, object]]]:
|
|
return fetch_project_breakdowns(start_date=start_date, end_date=end_date)
|
|
|
|
@app.get("/api/integration/payment-source")
|
|
def integration_payment_source() -> dict[str, object]:
|
|
return fetch_payment_source_rows()
|
|
|
|
@app.get("/api/integration/mh-source")
|
|
def integration_mh_source() -> dict[str, object]:
|
|
return fetch_mh_source_rows()
|