From 728209da7da10c66daf4de7c60b6cd7d327a1930 Mon Sep 17 00:00:00 2001 From: Vlad Stan Date: Fri, 8 Jul 2022 08:11:34 +0300 Subject: [PATCH] refactor: replace `mempool` internal API with a more generic `config` API --- lnbits/extensions/satspay/crud.py | 7 ++--- lnbits/extensions/satspay/views_api.py | 20 ------------- lnbits/extensions/watchonly/crud.py | 38 ------------------------ lnbits/extensions/watchonly/views_api.py | 30 ++----------------- 4 files changed, 6 insertions(+), 89 deletions(-) diff --git a/lnbits/extensions/satspay/crud.py b/lnbits/extensions/satspay/crud.py index 9deb32154..8c5ca67be 100644 --- a/lnbits/extensions/satspay/crud.py +++ b/lnbits/extensions/satspay/crud.py @@ -6,7 +6,7 @@ from lnbits.core.services import create_invoice from lnbits.core.views.api import api_payment from lnbits.helpers import urlsafe_short_hash -from ..watchonly.crud import get_fresh_address, get_mempool, get_watch_wallet +from ..watchonly.crud import get_fresh_address, get_config, get_watch_wallet # from lnbits.db import open_ext_db from . import db @@ -18,7 +18,6 @@ from .models import Charges, CreateCharge async def create_charge(user: str, data: CreateCharge) -> Charges: charge_id = urlsafe_short_hash() if data.onchainwallet: - wallet = await get_watch_wallet(data.onchainwallet) onchain = await get_fresh_address(data.onchainwallet) onchainaddress = onchain.address else: @@ -102,11 +101,11 @@ async def check_address_balance(charge_id: str) -> List[Charges]: charge = await get_charge(charge_id) if not charge.paid: if charge.onchainaddress: - mempool = await get_mempool(charge.user) + config = await get_config(charge.user) try: async with httpx.AsyncClient() as client: r = await client.get( - mempool.endpoint + "/api/address/" + charge.onchainaddress + config.mempool_endpoint + "/api/address/" + charge.onchainaddress ) respAmount = r.json()["chain_stats"]["funded_txo_sum"] if respAmount >= charge.balance: diff --git a/lnbits/extensions/satspay/views_api.py b/lnbits/extensions/satspay/views_api.py index c3e38f0cd..14e5bd94b 100644 --- a/lnbits/extensions/satspay/views_api.py +++ b/lnbits/extensions/satspay/views_api.py @@ -95,7 +95,6 @@ async def api_charge_delete(charge_id, wallet: WalletTypeInfo = Depends(get_key_ @satspay_ext.get("/api/v1/charges/balance/{charge_id}") async def api_charges_balance(charge_id): - charge = await check_address_balance(charge_id) if not charge: @@ -126,22 +125,3 @@ async def api_charges_balance(charge_id): except AssertionError: charge.webhook = None return charge.dict() - - -#############################MEMPOOL########################## - - -@satspay_ext.put("/api/v1/mempool") -async def api_update_mempool( - endpoint: str = Query(...), wallet: WalletTypeInfo = Depends(get_key_type) -): - mempool = await update_mempool(endpoint, user=wallet.wallet.user) - return mempool.dict() - - -@satspay_ext.route("/api/v1/mempool") -async def api_get_mempool(wallet: WalletTypeInfo = Depends(get_key_type)): - mempool = await get_mempool(wallet.wallet.user) - if not mempool: - mempool = await create_mempool(user=wallet.wallet.user) - return mempool.dict() diff --git a/lnbits/extensions/watchonly/crud.py b/lnbits/extensions/watchonly/crud.py index b88a7df7e..0d28eb702 100644 --- a/lnbits/extensions/watchonly/crud.py +++ b/lnbits/extensions/watchonly/crud.py @@ -238,41 +238,3 @@ async def get_config(user: str) -> Optional[Config]: """SELECT json_data FROM watchonly.config WHERE "user" = ?""", (user,) ) return json.loads(row[0], object_hook=lambda d: Config(**d)) if row else None - - -######################MEMPOOL####################### -### TODO: fix statspay dependcy and remove -async def create_mempool(user: str) -> Optional[Mempool]: - await db.execute( - """ - INSERT INTO watchonly.mempool ("user",endpoint) - VALUES (?, ?) - """, - (user, "https://mempool.space"), - ) - row = await db.fetchone( - """SELECT * FROM watchonly.mempool WHERE "user" = ?""", (user,) - ) - return Mempool.from_row(row) if row else None - - -### TODO: fix statspay dependcy and remove -async def update_mempool(user: str, **kwargs) -> Optional[Mempool]: - q = ", ".join([f"{field[0]} = ?" for field in kwargs.items()]) - - await db.execute( - f"""UPDATE watchonly.mempool SET {q} WHERE "user" = ?""", - (*kwargs.values(), user), - ) - row = await db.fetchone( - """SELECT * FROM watchonly.mempool WHERE "user" = ?""", (user,) - ) - return Mempool.from_row(row) if row else None - - -### TODO: fix statspay dependcy and remove -async def get_mempool(user: str) -> Mempool: - row = await db.fetchone( - """SELECT * FROM watchonly.mempool WHERE "user" = ?""", (user,) - ) - return Mempool.from_row(row) if row else None diff --git a/lnbits/extensions/watchonly/views_api.py b/lnbits/extensions/watchonly/views_api.py index f9055a207..e7c413366 100644 --- a/lnbits/extensions/watchonly/views_api.py +++ b/lnbits/extensions/watchonly/views_api.py @@ -13,21 +13,17 @@ from lnbits.decorators import WalletTypeInfo, get_key_type, require_admin_key from lnbits.extensions.watchonly import watchonly_ext from .crud import ( - create_config, - create_fresh_addresses, - create_mempool, create_watch_wallet, delete_addresses_for_wallet, delete_watch_wallet, get_addresses, get_config, get_fresh_address, - get_mempool, + create_fresh_addresses, + update_address, + delete_addresses_for_wallet, get_watch_wallet, get_watch_wallets, - update_address, - update_config, - update_mempool, update_watch_wallet, ) from .helpers import parse_key @@ -281,23 +277,3 @@ async def api_get_config(w: WalletTypeInfo = Depends(get_key_type)): if not config: config = await create_config(user=w.wallet.user) return config.dict() - - -#############################MEMPOOL########################## - -### TODO: fix statspay dependcy and remove -@watchonly_ext.put("/api/v1/mempool") -async def api_update_mempool( - endpoint: str = Query(...), w: WalletTypeInfo = Depends(require_admin_key) -): - mempool = await update_mempool(**{"endpoint": endpoint}, user=w.wallet.user) - return mempool.dict() - - -### TODO: fix statspay dependcy and remove -@watchonly_ext.get("/api/v1/mempool") -async def api_get_mempool(w: WalletTypeInfo = Depends(require_admin_key)): - mempool = await get_mempool(w.wallet.user) - if not mempool: - mempool = await create_mempool(user=w.wallet.user) - return mempool.dict()