diff options
| author | Adam Soltys <[email protected]> | 2023-11-13 01:13:55 -0800 |
|---|---|---|
| committer | Adam Soltys <[email protected]> | 2023-11-13 01:13:55 -0800 |
| commit | 545820baa7bf625fdb4abc7ec94154049391b710 (patch) | |
| tree | 61abc5a4cbc1187efa4a068e20f4d63114e9d585 /lib/payments.js | |
| parent | d03320dea293fbc9a434273665fc37bc93418192 (diff) | |
| download | coinos-server-545820baa7bf625fdb4abc7ec94154049391b710.tar.gz coinos-server-545820baa7bf625fdb4abc7ec94154049391b710.zip | |
use lua script for debit
Diffstat (limited to 'lib/payments.js')
| -rw-r--r-- | lib/payments.js | 32 |
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, |
