Files
aurum/backend/app/api/routes/reports.py
ZProger fe9b079c12 Initial public release
Aurum — a self-hosted personal finance operating system: cash flow,
net worth tracking, budgets, goals, recurring payments, reports,
proactive alerts, and a compound-interest returns calculator, all
bilingual (RU/EN) and mobile-first. Ships as a three-container Docker
Compose stack (Postgres + FastAPI + nginx-served React frontend).

See README.md for setup and CONTRIBUTING.md for development.
2026-08-16 18:39:52 +03:00

32 lines
1.2 KiB
Python

from datetime import date as date_
from fastapi import APIRouter, Depends, Query
from sqlalchemy.ext.asyncio import AsyncSession
from app.api.deps import get_session
from app.models.enums import CategoryKind
from app.schemas.reports import CategoryRankingReport, CategorySpendingReport
from app.services.reports_service import get_category_ranking_report, get_category_spending_report
router = APIRouter(prefix="/reports", tags=["reports"])
@router.get("/category-spending", response_model=CategorySpendingReport)
async def read_category_spending_report(
category_id: int,
start_date: date_ | None = Query(default=None),
end_date: date_ | None = Query(default=None),
session: AsyncSession = Depends(get_session),
) -> CategorySpendingReport:
return await get_category_spending_report(session, category_id, start_date, end_date)
@router.get("/category-ranking", response_model=CategoryRankingReport)
async def read_category_ranking_report(
kind: CategoryKind = CategoryKind.EXPENSE,
start_date: date_ | None = Query(default=None),
end_date: date_ | None = Query(default=None),
session: AsyncSession = Depends(get_session),
) -> CategoryRankingReport:
return await get_category_ranking_report(session, kind, start_date, end_date)