actually do the fee abs() thing on the balances view.
This commit is contained in:
parent
045e069312
commit
11679a4fa7
2 changed files with 27 additions and 1 deletions
|
|
@ -135,3 +135,29 @@ async def m003_add_invoice_webhook(db):
|
||||||
|
|
||||||
await db.execute("ALTER TABLE apipayments ADD COLUMN webhook TEXT")
|
await db.execute("ALTER TABLE apipayments ADD COLUMN webhook TEXT")
|
||||||
await db.execute("ALTER TABLE apipayments ADD COLUMN webhook_status TEXT")
|
await db.execute("ALTER TABLE apipayments ADD COLUMN webhook_status TEXT")
|
||||||
|
|
||||||
|
|
||||||
|
async def m004_ensure_fees_are_always_negative(db):
|
||||||
|
"""
|
||||||
|
Use abs() so wallet backends don't have to care about the sign of the fees.
|
||||||
|
"""
|
||||||
|
|
||||||
|
await db.execute("DROP VIEW balances")
|
||||||
|
|
||||||
|
await db.execute(
|
||||||
|
"""
|
||||||
|
CREATE VIEW IF NOT EXISTS balances AS
|
||||||
|
SELECT wallet, COALESCE(SUM(s), 0) AS balance FROM (
|
||||||
|
SELECT wallet, SUM(amount) AS s -- incoming
|
||||||
|
FROM apipayments
|
||||||
|
WHERE amount > 0 AND pending = 0 -- don't sum pending
|
||||||
|
GROUP BY wallet
|
||||||
|
UNION ALL
|
||||||
|
SELECT wallet, SUM(amount - abs(fee)) AS s -- outgoing, sum fees
|
||||||
|
FROM apipayments
|
||||||
|
WHERE amount < 0 -- do sum pending
|
||||||
|
GROUP BY wallet
|
||||||
|
)
|
||||||
|
GROUP BY wallet;
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
|
|
||||||
|
|
@ -154,7 +154,7 @@ async def pay_invoice(
|
||||||
if payment.checking_id:
|
if payment.checking_id:
|
||||||
await create_payment(
|
await create_payment(
|
||||||
checking_id=payment.checking_id,
|
checking_id=payment.checking_id,
|
||||||
fee=-abs(payment.fee_msat),
|
fee=payment.fee_msat,
|
||||||
preimage=payment.preimage,
|
preimage=payment.preimage,
|
||||||
pending=payment.ok == None,
|
pending=payment.ok == None,
|
||||||
conn=conn,
|
conn=conn,
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue