mirror of
https://github.com/vas3k/TaxHacker.git
synced 2026-01-05 21:20:53 -06:00
86 lines
1.8 KiB
TypeScript
86 lines
1.8 KiB
TypeScript
"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 (userId: string) => {
|
|
return await prisma.file.findMany({
|
|
where: {
|
|
isReviewed: false,
|
|
userId,
|
|
},
|
|
orderBy: {
|
|
createdAt: "desc",
|
|
},
|
|
})
|
|
})
|
|
|
|
export const getUnsortedFilesCount = cache(async (userId: string) => {
|
|
return await prisma.file.count({
|
|
where: {
|
|
isReviewed: false,
|
|
userId,
|
|
},
|
|
})
|
|
})
|
|
|
|
export const getFileById = cache(async (id: string, userId: string) => {
|
|
return await prisma.file.findFirst({
|
|
where: { id, userId },
|
|
})
|
|
})
|
|
|
|
export const getFilesByTransactionId = cache(async (id: string, userId: string) => {
|
|
const transaction = await getTransactionById(id, userId)
|
|
if (transaction && transaction.files) {
|
|
return await prisma.file.findMany({
|
|
where: {
|
|
id: {
|
|
in: transaction.files as string[],
|
|
},
|
|
userId,
|
|
},
|
|
orderBy: {
|
|
createdAt: "asc",
|
|
},
|
|
})
|
|
}
|
|
return []
|
|
})
|
|
|
|
export const createFile = async (userId: string, data: any) => {
|
|
return await prisma.file.create({
|
|
data: {
|
|
...data,
|
|
userId,
|
|
},
|
|
})
|
|
}
|
|
|
|
export const updateFile = async (id: string, userId: string, data: any) => {
|
|
return await prisma.file.update({
|
|
where: { id, userId },
|
|
data,
|
|
})
|
|
}
|
|
|
|
export const deleteFile = async (id: string, userId: string) => {
|
|
const file = await getFileById(id, userId)
|
|
if (!file) {
|
|
return
|
|
}
|
|
|
|
try {
|
|
await unlink(path.resolve(path.normalize(file.path)))
|
|
} catch (error) {
|
|
console.error("Error deleting file:", error)
|
|
}
|
|
|
|
return await prisma.file.delete({
|
|
where: { id, userId },
|
|
})
|
|
}
|