Select Git revision
transactions.js
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
transactions.js 1.17 KiB
import { db } from "$lib/server/database";
export async function buyArticles(userId, card, items, noBalance=false) {
const [user, ...itemTransactions] = await db.$transaction([
db.user.update({
where: { id: userId },
data: {
balance: {
decrement: noBalance===true ? 0 : items.reduce((sum, item) => sum + item.price + item.premium, 0)
},
}
}),
...items.map(item => db.item.update({
where: { code: item.code },
data: {
stock: { decrement: 1 },
bought: { increment: 1 },
transactions: {
create: {
price: item.price,
premium: item.premium,
card,
user: { connect: { id: userId } }
}
}
}
}))
]);
return { user, itemTransactions };
}
export async function transferMoney(fromId, card, toId, amount){
const [to, from] = await db.$transaction([
db.user.update({
where: { id: toId },
data: {
balance: {
increment: amount
},
moneyTransfersReceived: {
create: {
amount,
card,
from: { connect: { id: fromId } }
}
}
}
}),
db.user.update({
where: { id: fromId },
data: {
balance: {
decrement: amount
}
}
})
]);
return { to, from };
}