From d3a35dad2f335a6291f5d656e101956a51bdaa6b Mon Sep 17 00:00:00 2001 From: Adam Soltys Date: Thu, 16 Mar 2023 08:52:55 -0700 Subject: fix balance endpoint --- index.js | 1 + routes/payments.js | 24 ++++++++++++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/index.js b/index.js index 61c4bde1..04e9187f 100644 --- a/index.js +++ b/index.js @@ -60,6 +60,7 @@ app.get("/decode", lnurl.decode); app.get("/lnurlp/:username", lnurl.lnurlp); app.get("/lnurl/:id", lnurl.lnurl); +app.post("/fix", auth, payments.fix); app.post("/bitcoin", payments.bitcoin); app.post("/bitcoin/fee", auth, payments.fee); app.post("/bitcoin/send", auth, payments.send); diff --git a/routes/payments.js b/routes/payments.js index 62c5f737..c09fcf93 100644 --- a/routes/payments.js +++ b/routes/payments.js @@ -399,5 +399,29 @@ export default { } catch (e) { bail(res, e.message); } + }, + + async fix({ body: { uid }, user }, res) { + try { + if (!user.admin) fail("unauthorized"); + + let { username } = await g(`user:${uid}`); + let balance = await g(`balance:${uid}`); + + let payments = await db.lRange(`${uid}:payments`, 0, -1); + + let total = 0; + for (let pid of payments) { + let p = await g(`payment:${pid}`); + total += p.amount; + if (p.amount < 0) total -= ((p.fee || 0) + (p.ourfee || 0)); + } + + l('corrected balance', username, uid, balance, total); + await s(`balance:${uid}`, total); + res.send("ok"); + } catch (e) { + bail(res, e.message); + } } }; -- cgit v1.2.3