Spaces:
Paused
Paused
| 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"]) | |
| 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 | |