File size: 924 Bytes
60faa09 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | import { prisma } from "../prisma";
export const UserService = {
async getCredits(userId) {
const user = await prisma.user.findUnique({
where: { id: userId },
select: { credits: true },
});
return user ? user.credits : 0;
},
async addCredits(userId, amount) {
if (amount <= 0) return;
return await prisma.user.update({
where: { id: userId },
data: {
credits: {
increment: amount,
},
},
});
},
async deductCredits(userId, amount) {
if (amount <= 0) return;
// Check if the user has enough credits
const currentCredits = await this.getCredits(userId);
if (currentCredits < amount) {
throw new Error("Insufficient credits available");
}
return await prisma.user.update({
where: { id: userId },
data: {
credits: {
decrement: amount,
},
},
});
},
};
|