diff --git a/lnbits/extensions/diagonalley/crud.py b/lnbits/extensions/diagonalley/crud.py index 7dc02cd41..3b58b1291 100644 --- a/lnbits/extensions/diagonalley/crud.py +++ b/lnbits/extensions/diagonalley/crud.py @@ -11,7 +11,15 @@ from lnbits.helpers import urlsafe_short_hash from lnbits.settings import WALLET from . import db -from .models import Orders, Products, Stalls, Zones, createProduct, createZones +from .models import ( + Orders, + Products, + Stalls, + Zones, + createProduct, + createStalls, + createZones, +) regex = re.compile( r"^(?:http|ftp)s?://" # http:// or https:// @@ -185,20 +193,10 @@ async def delete_diagonalley_zone(zone_id: str) -> None: async def create_diagonalley_stall( - *, - wallet: str, - name: str, - publickey: str, - privatekey: str, - relays: str, - shippingzones: str, + data: createStalls ) -> Stalls: - - returning = "" if db.type == SQLITE else "RETURNING ID" - method = db.execute if db.type == SQLITE else db.fetchone - stall_id = urlsafe_short_hash() - result = await (method)( + await db.execute( f""" INSERT INTO diagonalley.stalls ( id, @@ -210,9 +208,15 @@ async def create_diagonalley_stall( shippingzones ) VALUES (?, ?, ?, ?, ?, ?, ?) - {returning} """, - (stall_id, wallet, name, publickey, privatekey, relays, shippingzones), + ( + stall_id, + data.wallet, + data.name, + data.publickey, + data.privatekey, + data.relays, + data.shippingzones), ) stall = await get_diagonalley_stall(stall_id) diff --git a/lnbits/extensions/diagonalley/models.py b/lnbits/extensions/diagonalley/models.py index bd667a2f7..4c674c8a1 100644 --- a/lnbits/extensions/diagonalley/models.py +++ b/lnbits/extensions/diagonalley/models.py @@ -13,20 +13,21 @@ from lnbits.lnurl import encode as lnurl_encode # type: ignore class Stalls(BaseModel): - id: str = Query(None) - wallet: str = Query(None) - name: str = Query(None) - publickey: str = Query(None) - privatekey: str = Query(None) - relays: str = Query(None) + id: str + wallet: str + name: str + publickey: str + privatekey: str + relays: str + shippingzones: str class createStalls(BaseModel): - wallet: str = Query(None) - name: str = Query(None) - publickey: str = Query(None) - privatekey: str = Query(None) - relays: str = Query(None) - shippingzones: str = Query(None) + wallet: str = Query(...) + name: str = Query(...) + publickey: str = Query(...) + privatekey: str = Query(...) + relays: str = Query(...) + shippingzones: str = Query(...) class createProduct(BaseModel): stall: str = Query(None) diff --git a/lnbits/extensions/diagonalley/views_api.py b/lnbits/extensions/diagonalley/views_api.py index 1ad839364..ccac9b245 100644 --- a/lnbits/extensions/diagonalley/views_api.py +++ b/lnbits/extensions/diagonalley/views_api.py @@ -39,7 +39,15 @@ from .crud import ( update_diagonalley_stall, update_diagonalley_zone, ) -from .models import Orders, Products, Stalls, Zones, createProduct, createZones +from .models import ( + Orders, + Products, + Stalls, + Zones, + createProduct, + createStalls, + createZones, +) # from lnbits.db import open_ext_db @@ -167,33 +175,33 @@ async def api_diagonalley_zone_delete(zone_id, wallet: WalletTypeInfo = Depends( @diagonalley_ext.get("/api/v1/stalls") -async def api_diagonalley_stalls(wallet: WalletTypeInfo = Depends(get_key_type)): +async def api_diagonalley_stalls(wallet: WalletTypeInfo = Depends(get_key_type), all_wallets: bool = Query(False)): wallet_ids = [wallet.wallet.id] - if "all_wallets" in request.args: + if all_wallets: wallet_ids = (await get_user(wallet.wallet.user)).wallet_ids - return ([stall._asdict() for stall in await get_diagonalley_stalls(wallet_ids)]) + return ([stall.dict() for stall in await get_diagonalley_stalls(wallet_ids)]) @diagonalley_ext.post("/api/v1/stalls") @diagonalley_ext.put("/api/v1/stalls/{stall_id}") -async def api_diagonalley_stall_create(data: createStalls, stall_id: str = Query(None), wallet: WalletTypeInfo = Depends(get_key_type)): +async def api_diagonalley_stall_create(data: createStalls, stall_id = None, wallet: WalletTypeInfo = Depends(get_key_type)): if stall_id: stall = await get_diagonalley_stall(stall_id) if not stall: - return ({"message": "Withdraw stall does not exist."})) + return ({"message": "Withdraw stall does not exist."}) if stall.wallet != wallet.wallet.id: - return ({"message": "Not your withdraw stall."})) + return ({"message": "Not your withdraw stall."}) - stall = await update_diagonalley_stall(stall_id, data) + stall = await update_diagonalley_stall(stall_id, **data.dict()) else: - stall = await create_diagonalley_stall(wallet_id=wallet.wallet.id, data) + stall = await create_diagonalley_stall(data=data) - return ({**stall._asdict()})) + return stall.dict() @diagonalley_ext.delete("/api/v1/stalls/{stall_id}") @@ -207,7 +215,6 @@ async def api_diagonalley_stall_delete(stall_id: str = Query(None), wallet: Wall return ({"message": "Not your Stall."}) await delete_diagonalley_stall(stall_id) - raise HTTPException(status_code=HTTPStatus.NO_CONTENT)