"use server" import { prisma } from "@/lib/db" import { unlink } from "fs/promises" import path from "path" import { cache } from "react" import { getTransactionById } from "./transactions" export const getUnsortedFiles = cache(async () => { return await prisma.file.findMany({ where: { isReviewed: false, }, orderBy: { createdAt: "desc", }, }) }) export const getUnsortedFilesCount = cache(async () => { return await prisma.file.count({ where: { isReviewed: false, }, }) }) export const getFileById = cache(async (id: string) => { return await prisma.file.findFirst({ where: { id }, }) }) export const getFilesByTransactionId = cache(async (id: string) => { const transaction = await getTransactionById(id) if (transaction && transaction.files) { return await prisma.file.findMany({ where: { id: { in: transaction.files as string[], }, }, }) } return [] }) export const createFile = async (data: any) => { return await prisma.file.create({ data, }) } export const updateFile = async (id: string, data: any) => { return await prisma.file.update({ where: { id }, data, }) } export const deleteFile = async (id: string) => { const file = await getFileById(id) if (file) { await unlink(path.resolve(file.path)) return await prisma.file.delete({ where: { id }, }) } }