route.ts 954 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. import {
  2. getDashboardSummary,
  3. getInvoices,
  4. getExpenses,
  5. getCustomers,
  6. } from "@/lib/db/store";
  7. export async function POST(req: Request) {
  8. const body = await req.json();
  9. const { format = "json", reportType = "summary" } = body;
  10. let data: unknown;
  11. switch (reportType) {
  12. case "summary":
  13. data = await getDashboardSummary();
  14. break;
  15. case "invoices":
  16. data = await getInvoices();
  17. break;
  18. case "expenses":
  19. data = await getExpenses();
  20. break;
  21. case "customers":
  22. data = await getCustomers();
  23. break;
  24. default:
  25. data = await getDashboardSummary();
  26. }
  27. if (format === "csv") {
  28. return Response.json({
  29. message: "CSV export initiated",
  30. downloadUrl: `/api/v1/reports/download/${reportType}.csv`,
  31. format: "csv",
  32. });
  33. }
  34. return Response.json({
  35. message: "Report generated",
  36. reportType,
  37. generatedAt: new Date().toISOString(),
  38. data,
  39. });
  40. }