aboutsummaryrefslogtreecommitdiffstats
path: root/lib/payments.js
diff options
context:
space:
mode:
authorAdam Soltys <[email protected]>2023-11-13 01:13:55 -0800
committerAdam Soltys <[email protected]>2023-11-13 01:13:55 -0800
commit545820baa7bf625fdb4abc7ec94154049391b710 (patch)
tree61abc5a4cbc1187efa4a068e20f4d63114e9d585 /lib/payments.js
parentd03320dea293fbc9a434273665fc37bc93418192 (diff)
downloadcoinos-server-545820baa7bf625fdb4abc7ec94154049391b710.tar.gz
coinos-server-545820baa7bf625fdb4abc7ec94154049391b710.zip
use lua script for debit
Diffstat (limited to 'lib/payments.js')
-rw-r--r--lib/payments.js32
1 files changed, 10 insertions, 22 deletions
diff --git a/lib/payments.js b/lib/payments.js
index e1ed5d0b..f39e2937 100644
--- a/lib/payments.js
+++ b/lib/payments.js
@@ -63,29 +63,17 @@ export let debit = async (
? Math.round(amount * config.fee)
: 0;
- await t(`balance:${uid}`, async (balance, db) => {
- await t(`credit:${type}:${uid}`, async (credit, db) => {
- let covered = Math.min(credit, ourfee) || 0;
- ourfee -= covered;
+ let r = await db.debit(
+ `balance:${uid}`,
+ `credit:${type}:${uid}`,
+ amount || 0,
+ tip || 0,
+ fee || 0,
+ ourfee || 0
+ );
+
- l(
- "debiting",
- user.username,
- balance,
- amount,
- tip,
- fee,
- ourfee,
- amount + fee + ourfee + tip
- );
- if (balance < amount + tip + fee + ourfee) fail("Insufficient funds");
- await db
- .multi()
- .decrBy(`credit:${type}:${uid}`, covered)
- .decrBy(`balance:${uid}`, amount + tip + fee + ourfee)
- .exec();
- });
- });
+ if (r !== "ok") fail("Insufficient funds");
let p = {
id,