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