route.ts 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. import { NextResponse } from "next/server";
  2. import { PrismaClient } from "@prisma/client";
  3. const prisma = new PrismaClient();
  4. export const GET = async () => {
  5. try {
  6. const files = await prisma.file.findMany({
  7. select: {
  8. id: true,
  9. filename: true,
  10. mimetype: true,
  11. size: true,
  12. createdAt: true,
  13. updatedAt: true,
  14. },
  15. orderBy: {
  16. createdAt: 'desc',
  17. },
  18. });
  19. const response = NextResponse.json({
  20. success: true,
  21. files,
  22. });
  23. // Add CORS headers
  24. response.headers.set('Access-Control-Allow-Origin', '*');
  25. response.headers.set('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS');
  26. response.headers.set('Access-Control-Allow-Headers', 'Content-Type, Authorization');
  27. return response;
  28. } catch (error) {
  29. console.error("Error listing files:", error);
  30. const response = NextResponse.json(
  31. { success: false, error: "Failed to list files" },
  32. { status: 500 }
  33. );
  34. response.headers.set('Access-Control-Allow-Origin', '*');
  35. return response;
  36. } finally {
  37. await prisma.$disconnect();
  38. }
  39. };
  40. export const OPTIONS = async () => {
  41. const response = new NextResponse(null, { status: 200 });
  42. response.headers.set('Access-Control-Allow-Origin', '*');
  43. response.headers.set('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS');
  44. response.headers.set('Access-Control-Allow-Headers', 'Content-Type, Authorization');
  45. return response;
  46. };