| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- "use server";
- import { PrismaClient } from "@prisma/client";
- import { revalidatePath } from "next/cache";
- const prisma = new PrismaClient();
- export interface FileData {
- id: string;
- filename: string;
- mimetype: string;
- size: number;
- createdAt: Date;
- updatedAt: Date;
- }
- export async function getFiles(): Promise<FileData[]> {
- try {
- const files = await prisma.file.findMany({
- select: {
- id: true,
- filename: true,
- mimetype: true,
- size: true,
- createdAt: true,
- updatedAt: true,
- },
- orderBy: {
- createdAt: 'desc',
- },
- });
- return files;
- } catch (error) {
- console.error("Error listing files:", error);
- throw new Error("Failed to list files");
- } finally {
- await prisma.$disconnect();
- }
- }
- export async function downloadFile(id: string): Promise<{
- data: Uint8Array;
- filename: string;
- mimetype: string;
- size: number;
- } | null> {
- try {
- const file = await prisma.file.findUnique({
- where: { id },
- });
- if (!file) {
- return null;
- }
- return {
- data: file.data,
- filename: file.filename,
- mimetype: file.mimetype,
- size: file.size,
- };
- } catch (error) {
- console.error("Error retrieving file:", error);
- throw new Error("Failed to retrieve file");
- } finally {
- await prisma.$disconnect();
- }
- }
- export async function deleteFile(id: string): Promise<boolean> {
- try {
- const file = await prisma.file.findUnique({
- where: { id },
- });
- if (!file) {
- return false;
- }
- await prisma.file.delete({
- where: { id },
- });
- revalidatePath('/files');
- revalidatePath('/dashboard');
- return true;
- } catch (error) {
- console.error("Error deleting file:", error);
- throw new Error("Failed to delete file");
- } finally {
- await prisma.$disconnect();
- }
- }
|