/* Financer - Pocket Money Tracker * Copyright (C) 2025 Vidhu Kant Sharma * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ import prisma from "../util/prisma"; import { Transaction, TransactionType } from "@prisma/client"; const create = async (transaction: Transaction) => { // TODO: validate return prisma.transaction.create({ data: { ...transaction, } }) } const read = async (userId: Number, type: String) => { const hasFilter = [ TransactionType.LENT, TransactionType.BORROWED, TransactionType.SPENT, TransactionType.RECEIVED ].includes(type as TransactionType) const filter = hasFilter ? { type: type } : {} return prisma.transaction.findMany({ // @ts-ignore where: { userId: userId, ...filter } }) } // TODO: ig collaborated transactions would need more logic const del = async (userId: Number, transactionId: String) => { const t = await prisma.transaction.findUnique({ // @ts-ignore where: { id: transactionId } }) if (t) { if (t.userId == userId) { return prisma.transaction.delete({ // @ts-ignore where: { id: transactionId } }) } else { throw new Error("403") } } else { throw new Error("404") } } export { create, read, del }