mirror of
https://github.com/lnbits/lnbits-legend.git
synced 2025-02-25 15:10:41 +01:00
place order flow WIP
This commit is contained in:
parent
35cf441d91
commit
777b9bef1b
3 changed files with 53 additions and 22 deletions
|
@ -13,11 +13,13 @@ from lnbits.settings import WALLET
|
|||
from . import db
|
||||
from .models import (
|
||||
Market,
|
||||
OrderDetail,
|
||||
Orders,
|
||||
Products,
|
||||
Stalls,
|
||||
Zones,
|
||||
createOrder,
|
||||
createOrderDetails,
|
||||
createProduct,
|
||||
createStalls,
|
||||
createZones,
|
||||
|
@ -208,38 +210,55 @@ async def delete_diagonalley_stall(stall_id: str) -> None:
|
|||
###Orders
|
||||
|
||||
|
||||
async def create_diagonalley_order(data: createOrder) -> Orders:
|
||||
async def create_diagonalley_order(wallet_id: str, data: createOrder) -> Orders:
|
||||
|
||||
order_id = urlsafe_short_hash()
|
||||
await db.execute(
|
||||
f"""
|
||||
INSERT INTO diagonalley.orders (id, productid, wallet, product,
|
||||
quantity, shippingzone, address, email, invoiceid, paid, shipped)
|
||||
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
||||
INSERT INTO diagonalley.orders (id, wallet, shippingzone, address, email, total, invoiceid, paid, shipped)
|
||||
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)
|
||||
""",
|
||||
(
|
||||
order_id,
|
||||
data.productid,
|
||||
data.wallet,
|
||||
data.product,
|
||||
data.quantity,
|
||||
wallet_id,
|
||||
data.shippingzone,
|
||||
data.address,
|
||||
data.email,
|
||||
data.total,
|
||||
data.invoiceid,
|
||||
False,
|
||||
False,
|
||||
),
|
||||
)
|
||||
# if db.type == SQLITE:
|
||||
# order_id = result._result_proxy.lastrowid
|
||||
# else:
|
||||
# order_id = result[0]
|
||||
|
||||
|
||||
link = await get_diagonalley_order(order_id)
|
||||
assert link, "Newly created link couldn't be retrieved"
|
||||
return link
|
||||
|
||||
async def create_diagonalley_order_details(order_id: str, data: List[createOrderDetails]):
|
||||
for item in data:
|
||||
item_id = urlsafe_short_hash()
|
||||
await db.execute(
|
||||
"""
|
||||
INSERT INTO diagonalley.order_details (id, orderid, productid, quantity)
|
||||
VALUES (?, ?, ?, ?)
|
||||
""",
|
||||
(
|
||||
item_id,
|
||||
order_id,
|
||||
item.product_id,
|
||||
item.quantity,
|
||||
),
|
||||
)
|
||||
order_details = await get_diagonalley_order_details(order_id)
|
||||
return order_details
|
||||
|
||||
async def get_diagonalley_order_details(order_id: str) -> List[OrderDetail]:
|
||||
rows = await db.fetchall(
|
||||
f"SELECT * FROM diagonalley.order_details WHERE order_id = ?", (order_id,)
|
||||
)
|
||||
|
||||
return [OrderDetail(**row) for row in rows]
|
||||
|
||||
async def get_diagonalley_order(order_id: str) -> Optional[Orders]:
|
||||
row = await db.fetchone(
|
||||
|
|
|
@ -56,12 +56,12 @@ async def m001_initial(db):
|
|||
"""
|
||||
CREATE TABLE diagonalley.orders (
|
||||
id {db.serial_primary_key},
|
||||
productid TEXT NOT NULL,
|
||||
usr TEXT NOT NULL,
|
||||
pubkey TEXT NOT NULL,
|
||||
wallet TEXT NOT NULL,
|
||||
pubkey TEXT,
|
||||
shippingzone INTEGER NOT NULL,
|
||||
address TEXT NOT NULL,
|
||||
email TEXT NOT NULL,
|
||||
total INTEGER NOT NULL,
|
||||
invoiceid TEXT NOT NULL,
|
||||
paid BOOLEAN NOT NULL,
|
||||
shipped BOOLEAN NOT NULL,
|
||||
|
@ -81,8 +81,7 @@ async def m001_initial(db):
|
|||
id TEXT PRIMARY KEY,
|
||||
orderid INTEGER NOT NULL REFERENCES {db.references_schema}orders (id)
|
||||
productid TEXT NOT NULL REFERENCES {db.references_schema}products (id),
|
||||
quantity INTEGER NOT NULL,
|
||||
total INTEGER NOT NULL
|
||||
quantity INTEGER NOT NULL
|
||||
);
|
||||
"""
|
||||
)
|
||||
|
|
|
@ -55,16 +55,29 @@ class Zones(BaseModel):
|
|||
cost: int
|
||||
countries: str
|
||||
|
||||
class OrderDetail(BaseModel):
|
||||
id: str
|
||||
order_id: str
|
||||
product_id: str
|
||||
quantity: int
|
||||
|
||||
class createOrderDetails(BaseModel):
|
||||
product_id: str = Query(...)
|
||||
quantity: int = Query(..., ge=1)
|
||||
|
||||
|
||||
class createOrder(BaseModel):
|
||||
productid: str = Query(...)
|
||||
stall: str = Query(...)
|
||||
product: str = Query(...)
|
||||
quantity: int = Query(..., ge=1)
|
||||
wallet: str = Query(...)
|
||||
pubkey: str = Query(None)
|
||||
shippingzone: int = Query(...)
|
||||
address: str = Query(...)
|
||||
email: str = Query(...)
|
||||
total: int = Query(...)
|
||||
invoiceid: str = Query(...)
|
||||
products: List[createOrderDetails]
|
||||
# stall: str = Query(...)
|
||||
# product: str = Query(...)
|
||||
# quantity: int = Query(..., ge=1)
|
||||
|
||||
|
||||
class Orders(BaseModel):
|
||||
|
|
Loading…
Add table
Reference in a new issue