From b9de754598efece12bb97470ed970e2017ef040a Mon Sep 17 00:00:00 2001 From: Vlad Stan Date: Tue, 21 Oct 2025 14:59:04 +0300 Subject: [PATCH] fix: exclude (soft) deleted wallets when creating an invoice (#3439) --- lnbits/core/crud/wallets.py | 8 ++++---- tests/unit/test_db.py | 11 +++++++++++ 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/lnbits/core/crud/wallets.py b/lnbits/core/crud/wallets.py index f7895183e..771f6c043 100644 --- a/lnbits/core/crud/wallets.py +++ b/lnbits/core/crud/wallets.py @@ -104,7 +104,7 @@ async def delete_unused_wallets( async def get_wallet( - wallet_id: str, deleted: bool | None = None, conn: Connection | None = None + wallet_id: str, deleted: bool | None = False, conn: Connection | None = None ) -> Wallet | None: query = """ SELECT *, COALESCE(( @@ -122,7 +122,7 @@ async def get_wallet( async def get_wallets( - user_id: str, deleted: bool | None = None, conn: Connection | None = None + user_id: str, deleted: bool | None = False, conn: Connection | None = None ) -> list[Wallet]: query = """ SELECT *, COALESCE(( @@ -163,11 +163,11 @@ async def get_wallets_paginated( async def get_wallets_ids( - user_id: str, deleted: bool | None = None, conn: Connection | None = None + user_id: str, deleted: bool | None = False, conn: Connection | None = None ) -> list[str]: query = """SELECT id FROM wallets WHERE "user" = :user""" if deleted is not None: - query += "AND deleted = :deleted" + query += " AND deleted = :deleted" result: list[dict] = await (conn or db).fetchall( query, {"user": user_id, "deleted": deleted}, diff --git a/tests/unit/test_db.py b/tests/unit/test_db.py index e73ccd5e7..98e7ba328 100644 --- a/tests/unit/test_db.py +++ b/tests/unit/test_db.py @@ -30,6 +30,17 @@ async def test_create_wallet_and_delete_wallet(app, to_user): # check if wallet is deleted del_wallet = await get_wallet(wallet.id) + assert del_wallet is None + + # check if wallet is deleted + del_wallet = await get_wallet(wallet.id, False) + assert del_wallet is None + + del_wallet = await get_wallet(wallet.id, None) + assert del_wallet is not None + assert del_wallet.deleted is True + + del_wallet = await get_wallet(wallet.id, True) assert del_wallet is not None assert del_wallet.deleted is True