initial launch market
This commit is contained in:
parent
0f238286a3
commit
6d5e9aba39
6 changed files with 127 additions and 11 deletions
|
|
@ -12,6 +12,7 @@ from lnbits.settings import WALLET
|
|||
|
||||
from . import db
|
||||
from .models import (
|
||||
Market,
|
||||
Orders,
|
||||
Products,
|
||||
Stalls,
|
||||
|
|
@ -261,3 +262,27 @@ async def get_diagonalley_orders(wallet_ids: Union[str, List[str]]) -> List[Orde
|
|||
|
||||
async def delete_diagonalley_order(order_id: str) -> None:
|
||||
await db.execute("DELETE FROM diagonalley.orders WHERE id = ?", (order_id,))
|
||||
|
||||
### Market/Marketplace
|
||||
|
||||
async def get_diagonalley_markets(user: str) -> List[Market]:
|
||||
rows = await db.fetchall(
|
||||
'SELECT * FROM diagonalley.markets WHERE usr = ?', (user,)
|
||||
)
|
||||
return [Market(**row) for row in rows]
|
||||
|
||||
|
||||
async def get_diagonalley_market(market_id: str) -> Optional[Market]:
|
||||
row = await db.fetchone(
|
||||
'SELECT * FROM diagonalley.markets WHERE id = ?', (market_id,)
|
||||
)
|
||||
Market(**row) if row else None
|
||||
|
||||
|
||||
async def get_diagonalley_market_stalls(market_id: str):
|
||||
rows = await db.fetchall(
|
||||
"SELECT * FROM diagonalley.market_stalls WHERE marketid = ?", (market_id,)
|
||||
)
|
||||
return [Stalls(**row) for row in rows]
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -86,4 +86,30 @@ async def m001_initial(db):
|
|||
);
|
||||
"""
|
||||
)
|
||||
|
||||
"""
|
||||
Initial market table.
|
||||
"""
|
||||
await db.execute(
|
||||
"""
|
||||
CREATE TABLE diagonalley.markets (
|
||||
id TEXT PRIMARY KEY,
|
||||
usr TEXT NOT NULL,
|
||||
name TEXT
|
||||
);
|
||||
"""
|
||||
)
|
||||
|
||||
"""
|
||||
Initial market stalls table.
|
||||
"""
|
||||
await db.execute(
|
||||
"""
|
||||
CREATE TABLE diagonalley.market_stalls (
|
||||
id TEXT PRIMARY KEY,
|
||||
marketid TEXT NOT NULL REFERENCES {db.references_schema}markets (id),
|
||||
stallid TEXT NOT NULL REFERENCES {db.references_schema}stalls (id)
|
||||
);
|
||||
"""
|
||||
)
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
from typing import Optional
|
||||
from typing import List, Optional
|
||||
|
||||
from fastapi.param_functions import Query
|
||||
from pydantic import BaseModel
|
||||
|
|
@ -81,3 +81,13 @@ class Orders(BaseModel):
|
|||
paid: bool
|
||||
shipped: bool
|
||||
time: int
|
||||
|
||||
class CreateMarket(BaseModel):
|
||||
usr: str = Query(...)
|
||||
name: str = Query(None)
|
||||
stalls: List[str] = Query(...)
|
||||
|
||||
class Market(BaseModel):
|
||||
id: str
|
||||
usr: str
|
||||
name: Optional[str]
|
||||
|
|
|
|||
|
|
@ -816,7 +816,7 @@ new Vue({
|
|||
{
|
||||
name: 'stall',
|
||||
align: 'left',
|
||||
label: 'Stall',
|
||||
label: 'Store',
|
||||
field: 'stall'
|
||||
},
|
||||
{
|
||||
|
|
@ -1384,23 +1384,21 @@ new Vue({
|
|||
LNbits.utils.exportCSV(this.zonesTable.columns, this.zones)
|
||||
},
|
||||
////////////////////////////////////////
|
||||
//////////////////SHOP//////////////////
|
||||
//////////////////MARKET//////////////////
|
||||
////////////////////////////////////////
|
||||
getShops: function () {
|
||||
var self = this
|
||||
|
||||
getMarkets(){
|
||||
LNbits.api
|
||||
.request(
|
||||
'GET',
|
||||
'/diagonalley/api/v1/shops?all_wallets=true',
|
||||
'/diagonalley/api/v1/markets',
|
||||
this.g.user.wallets[0].inkey
|
||||
)
|
||||
.then(function (response) {
|
||||
.then((response) => {
|
||||
if (response.data) {
|
||||
self.shops = response.data.map(mapShops)
|
||||
this.shops = response.data.map(mapShops)
|
||||
}
|
||||
})
|
||||
.catch(function (error) {
|
||||
.catch((error) => {
|
||||
LNbits.utils.notifyApiError(error)
|
||||
})
|
||||
},
|
||||
|
|
@ -1451,7 +1449,6 @@ new Vue({
|
|||
})
|
||||
},
|
||||
createShop: function (data) {
|
||||
var self = this
|
||||
console.log('cuntywoo')
|
||||
LNbits.api
|
||||
.request(
|
||||
|
|
@ -1591,6 +1588,7 @@ new Vue({
|
|||
this.getProducts()
|
||||
this.getZones()
|
||||
this.getOrders()
|
||||
this.getMarkets()
|
||||
this.customerKeys = [
|
||||
'cb4c0164fe03fcdadcbfb4f76611c71620790944c24f21a1cd119395cdedfe1b',
|
||||
'a9c17358a6dc4ceb3bb4d883eb87967a66b3453a0f3199f0b1c8eef8070c6a07'
|
||||
|
|
|
|||
|
|
@ -38,3 +38,21 @@ async def display(request: Request, stall_id):
|
|||
"products": [product.dict() for product in products]
|
||||
},
|
||||
)
|
||||
|
||||
@diagonalley_ext.get("/{market_id}", response_class=HTMLResponse)
|
||||
async def display(request: Request, stall_id):
|
||||
stalls = await get_diagonalley_stall(stall_id)
|
||||
products = await get_diagonalley_products(stall_id)
|
||||
|
||||
if not stall:
|
||||
raise HTTPException(
|
||||
status_code=HTTPStatus.NOT_FOUND, detail="Stall does not exist."
|
||||
)
|
||||
return diagonalley_renderer().TemplateResponse(
|
||||
"diagonalley/stall.html",
|
||||
{
|
||||
"request": request,
|
||||
"stall": stall.dict(),
|
||||
"products": [product.dict() for product in products]
|
||||
},
|
||||
)
|
||||
|
|
|
|||
|
|
@ -25,6 +25,8 @@ from .crud import (
|
|||
delete_diagonalley_product,
|
||||
delete_diagonalley_stall,
|
||||
delete_diagonalley_zone,
|
||||
get_diagonalley_market,
|
||||
get_diagonalley_markets,
|
||||
get_diagonalley_order,
|
||||
get_diagonalley_orders,
|
||||
get_diagonalley_product,
|
||||
|
|
@ -38,6 +40,7 @@ from .crud import (
|
|||
update_diagonalley_zone,
|
||||
)
|
||||
from .models import (
|
||||
CreateMarket,
|
||||
Orders,
|
||||
Products,
|
||||
Stalls,
|
||||
|
|
@ -383,3 +386,39 @@ async def api_diagonalley_stall_order(
|
|||
),
|
||||
)
|
||||
return {"checking_id": checking_id, "payment_request": payment_request}
|
||||
|
||||
|
||||
##
|
||||
# MARKETS
|
||||
##
|
||||
|
||||
@diagonalley_ext.get("/api/v1/markets")
|
||||
async def api_diagonalley_orders(
|
||||
wallet: WalletTypeInfo = Depends(get_key_type)
|
||||
):
|
||||
try:
|
||||
return [market.dict() for market in await get_diagonalley_markets(wallet.wallet.user)]
|
||||
except:
|
||||
return {"message": "We could not retrieve the markets."}
|
||||
|
||||
@diagonalley_ext.post("/api/v1/markets")
|
||||
@diagonalley_ext.put("/api/v1/markets/{market_id}")
|
||||
async def api_diagonalley_stall_create(
|
||||
data: CreateMarket,
|
||||
market_id: str = None,
|
||||
wallet: WalletTypeInfo = Depends(require_invoice_key),
|
||||
):
|
||||
|
||||
if market_id:
|
||||
market = await get_diagonalley_market(market_id)
|
||||
if not market:
|
||||
return {"message": "Market does not exist."}
|
||||
|
||||
if market.usr != wallet.wallet.user:
|
||||
return {"message": "Not your market."}
|
||||
|
||||
market = await update_diagonalley_market(market_id, **data.dict())
|
||||
else:
|
||||
market = await create_diagonalley_market(data=data)
|
||||
|
||||
return market.dict()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue