from fastapi import APIRouter, Depends, Response from sqlalchemy.orm import Session from app.db.session import get_db from app.services.report_service import ReportService from app.schemas.report import ReportOut from typing import List import csv import io router = APIRouter(prefix="/api/v1/reports", tags=["reports"]) @router.get("/projects", response_model=List[ReportOut]) def get_reports(from_: str, to: str, type: str = "json", db: Session = Depends(get_db)): # For demo, just return all reports service = ReportService(db) reports = db.query(ReportService.db.query(ReportService.db)).all() if type == "csv": output = io.StringIO() writer = csv.writer(output) writer.writerow(["id", "project_id", "type", "status", "created_at", "completed"]) for r in reports: writer.writerow([r.id, r.project_id, r.type, r.status, r.created_at, r.completed]) response = Response(content=output.getvalue(), media_type="text/csv") response.headers["Content-Disposition"] = "attachment; filename=reports.csv" return response return reports