This commit is contained in:
Tiago vasconcelos 2022-01-27 16:18:12 +00:00
parent 8db457bd42
commit d6d33c6a22
3 changed files with 50 additions and 38 deletions

View file

@ -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)

View file

@ -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)

View file

@ -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)