lnbits-legend/lnbits/extensions/market/views_api.py

533 lines
15 KiB
Python
Raw Normal View History

2022-01-27 12:24:38 +00:00
from http import HTTPStatus
2023-01-04 11:16:20 +00:00
from fastapi import Body, Depends, Query, Request
2022-08-18 10:49:04 +01:00
from loguru import logger
2022-08-16 12:19:31 +01:00
from starlette.exceptions import HTTPException
2022-01-27 12:24:38 +00:00
from lnbits.core.crud import get_user
2022-01-27 14:58:58 +00:00
from lnbits.core.services import create_invoice
2022-08-19 11:19:45 +01:00
from lnbits.core.views.api import api_payment
2022-07-12 15:29:46 +01:00
from lnbits.decorators import (
WalletTypeInfo,
get_key_type,
require_admin_key,
require_invoice_key,
)
2022-12-22 12:23:22 +00:00
from lnbits.helpers import urlsafe_short_hash
2022-12-29 23:58:36 +00:00
from lnbits.utils.exchange_rates import currencies, get_fiat_rate_satoshis
2022-01-27 12:24:38 +00:00
2023-01-04 21:08:28 +00:00
from . import db, market_ext
2022-01-27 12:24:38 +00:00
from .crud import (
2023-01-04 21:08:28 +00:00
create_market_market,
create_market_market_stalls,
create_market_order,
create_market_order_details,
create_market_product,
create_market_settings,
create_market_stall,
create_market_zone,
delete_market_order,
delete_market_product,
delete_market_stall,
delete_market_zone,
get_market_chat_by_merchant,
get_market_chat_messages,
get_market_latest_chat_messages,
get_market_market,
get_market_market_stalls,
get_market_markets,
get_market_order,
get_market_order_details,
get_market_order_invoiceid,
get_market_orders,
get_market_product,
get_market_products,
get_market_settings,
get_market_stall,
get_market_stalls,
get_market_stalls_by_ids,
get_market_zone,
get_market_zones,
set_market_order_pubkey,
set_market_settings,
update_market_market,
update_market_product,
update_market_stall,
update_market_zone,
2022-01-27 12:24:38 +00:00
)
2022-01-27 16:18:12 +00:00
from .models import (
2022-07-27 15:28:58 +01:00
CreateMarket,
2023-01-04 11:16:20 +00:00
CreateMarketStalls,
2022-01-27 16:18:12 +00:00
Orders,
Products,
2022-12-29 23:58:36 +00:00
SetSettings,
2022-01-27 16:18:12 +00:00
Stalls,
Zones,
2022-01-28 15:11:31 +00:00
createOrder,
2022-01-27 16:18:12 +00:00
createProduct,
createStalls,
createZones,
)
2022-01-27 12:24:38 +00:00
# from lnbits.db import open_ext_db
### Products
2023-01-04 21:08:28 +00:00
@market_ext.get("/api/v1/products")
async def api_market_products(
2022-12-22 12:13:25 +00:00
wallet: WalletTypeInfo = Depends(require_invoice_key),
2022-07-12 15:25:25 +01:00
all_stalls: bool = Query(False),
2022-01-27 12:24:38 +00:00
):
wallet_ids = [wallet.wallet.id]
2022-01-27 14:58:58 +00:00
if all_stalls:
2023-01-04 11:16:20 +00:00
user = await get_user(wallet.wallet.user)
wallet_ids = user.wallet_ids if user else []
2022-01-27 12:24:38 +00:00
2023-01-04 21:08:28 +00:00
stalls = [stall.id for stall in await get_market_stalls(wallet_ids)]
2022-07-15 10:22:13 +01:00
if not stalls:
return
2023-01-04 21:08:28 +00:00
return [product.dict() for product in await get_market_products(stalls)]
2022-01-27 12:24:38 +00:00
2023-01-04 21:08:28 +00:00
@market_ext.post("/api/v1/products")
@market_ext.put("/api/v1/products/{product_id}")
async def api_market_product_create(
2022-12-22 12:13:25 +00:00
data: createProduct,
product_id=None,
wallet: WalletTypeInfo = Depends(require_invoice_key),
2022-07-12 15:25:25 +01:00
):
# For fiat currencies,
# we multiply by data.fiat_base_multiplier (usually 100) to save the value in cents.
2023-01-04 21:08:28 +00:00
settings = await get_market_settings(user=wallet.wallet.user)
2023-01-04 11:16:20 +00:00
assert settings
2023-01-04 21:08:28 +00:00
stall = await get_market_stall(stall_id=data.stall)
2023-01-04 11:16:20 +00:00
assert stall
if stall.currency != "sat":
data.price *= settings.fiat_base_multiplier
2022-01-27 12:24:38 +00:00
2023-01-09 12:31:12 +00:00
if data.image:
image_is_url = data.image.startswith("https://") or data.image.startswith(
"http://"
)
if not image_is_url:
def size(b64string):
return int((len(b64string) * 3) / 4 - b64string.count("=", -2))
image_size = size(data.image) / 1024
if image_size > 100:
raise HTTPException(
status_code=HTTPStatus.BAD_REQUEST,
detail=f"Image size is too big, {int(image_size)}Kb. Max: 100kb, Compress the image at https://tinypng.com, or use an URL.",
)
2022-01-27 12:24:38 +00:00
if product_id:
2023-01-04 21:08:28 +00:00
product = await get_market_product(product_id)
2022-01-27 12:24:38 +00:00
if not product:
return {"message": "Product does not exist."}
2022-08-16 12:19:31 +01:00
2023-01-04 21:08:28 +00:00
# stall = await get_market_stall(stall_id=product.stall)
2022-07-15 10:22:13 +01:00
if stall.wallet != wallet.wallet.id:
return {"message": "Not your product."}
2022-01-27 12:24:38 +00:00
2023-01-04 21:08:28 +00:00
product = await update_market_product(product_id, **data.dict())
2022-01-27 12:24:38 +00:00
else:
2023-01-04 21:08:28 +00:00
product = await create_market_product(data=data)
2023-01-04 11:16:20 +00:00
assert product
2022-01-27 14:58:58 +00:00
return product.dict()
2022-01-27 12:24:38 +00:00
2023-01-04 21:08:28 +00:00
@market_ext.delete("/api/v1/products/{product_id}")
async def api_market_products_delete(
2022-07-12 15:25:25 +01:00
product_id, wallet: WalletTypeInfo = Depends(require_admin_key)
):
2023-01-04 21:08:28 +00:00
product = await get_market_product(product_id)
2022-01-27 12:24:38 +00:00
if not product:
2022-07-12 15:25:25 +01:00
return {"message": "Product does not exist."}
2022-01-27 12:24:38 +00:00
2023-01-04 21:08:28 +00:00
stall = await get_market_stall(product.stall)
2023-01-04 11:16:20 +00:00
assert stall
2022-07-15 10:22:13 +01:00
if stall.wallet != wallet.wallet.id:
2023-01-04 21:08:28 +00:00
return {"message": "Not your Market."}
2022-01-27 12:24:38 +00:00
2023-01-04 21:08:28 +00:00
await delete_market_product(product_id)
2022-01-27 12:24:38 +00:00
raise HTTPException(status_code=HTTPStatus.NO_CONTENT)
# # # Shippingzones
2023-01-04 21:08:28 +00:00
@market_ext.get("/api/v1/zones")
async def api_market_zones(wallet: WalletTypeInfo = Depends(get_key_type)):
2022-01-27 12:24:38 +00:00
2023-01-04 21:08:28 +00:00
return await get_market_zones(wallet.wallet.user)
2022-01-27 12:24:38 +00:00
2022-07-12 15:25:25 +01:00
2023-01-04 21:08:28 +00:00
@market_ext.post("/api/v1/zones")
async def api_market_zone_create(
2022-07-12 15:25:25 +01:00
data: createZones, wallet: WalletTypeInfo = Depends(get_key_type)
):
2023-01-04 21:08:28 +00:00
zone = await create_market_zone(user=wallet.wallet.user, data=data)
2022-01-27 15:26:55 +00:00
return zone.dict()
2022-01-27 12:24:38 +00:00
2022-07-12 15:25:25 +01:00
2023-01-04 21:08:28 +00:00
@market_ext.post("/api/v1/zones/{zone_id}")
async def api_market_zone_update(
2022-07-12 15:25:25 +01:00
data: createZones,
2022-07-15 10:22:13 +01:00
zone_id: str,
2022-07-12 15:25:25 +01:00
wallet: WalletTypeInfo = Depends(require_admin_key),
):
2023-01-04 21:08:28 +00:00
zone = await get_market_zone(zone_id)
2022-02-04 13:05:48 +00:00
if not zone:
2022-07-12 15:25:25 +01:00
return {"message": "Zone does not exist."}
2022-02-04 13:05:48 +00:00
if zone.user != wallet.wallet.user:
2022-07-12 15:25:25 +01:00
return {"message": "Not your record."}
2023-01-04 21:08:28 +00:00
zone = await update_market_zone(zone_id, **data.dict())
2022-02-04 13:05:48 +00:00
return zone
2022-01-27 12:24:38 +00:00
2023-01-04 21:08:28 +00:00
@market_ext.delete("/api/v1/zones/{zone_id}")
async def api_market_zone_delete(
2022-07-12 15:25:25 +01:00
zone_id, wallet: WalletTypeInfo = Depends(require_admin_key)
):
2023-01-04 21:08:28 +00:00
zone = await get_market_zone(zone_id)
2022-01-27 12:24:38 +00:00
if not zone:
2022-07-12 15:25:25 +01:00
return {"message": "zone does not exist."}
2022-01-27 12:24:38 +00:00
2022-02-04 13:05:48 +00:00
if zone.user != wallet.wallet.user:
2022-07-12 15:25:25 +01:00
return {"message": "Not your zone."}
2022-01-27 12:24:38 +00:00
2023-01-04 21:08:28 +00:00
await delete_market_zone(zone_id)
2022-01-27 12:24:38 +00:00
raise HTTPException(status_code=HTTPStatus.NO_CONTENT)
# # # Stalls
2023-01-04 21:08:28 +00:00
@market_ext.get("/api/v1/stalls")
async def api_market_stalls(
2022-07-12 15:25:25 +01:00
wallet: WalletTypeInfo = Depends(get_key_type), all_wallets: bool = Query(False)
):
2022-01-27 12:24:38 +00:00
wallet_ids = [wallet.wallet.id]
2022-01-27 16:18:12 +00:00
if all_wallets:
2023-01-04 11:16:20 +00:00
user = await get_user(wallet.wallet.user)
wallet_ids = user.wallet_ids if user else []
2022-01-27 12:24:38 +00:00
2023-01-04 21:08:28 +00:00
return [stall.dict() for stall in await get_market_stalls(wallet_ids)]
2022-01-27 12:24:38 +00:00
2023-01-04 21:08:28 +00:00
@market_ext.post("/api/v1/stalls")
@market_ext.put("/api/v1/stalls/{stall_id}")
async def api_market_stall_create(
2022-07-12 15:25:25 +01:00
data: createStalls,
2022-07-15 10:22:13 +01:00
stall_id: str = None,
2022-07-12 15:29:46 +01:00
wallet: WalletTypeInfo = Depends(require_invoice_key),
2022-07-12 15:25:25 +01:00
):
2022-01-27 12:24:38 +00:00
if stall_id:
2023-01-04 21:08:28 +00:00
stall = await get_market_stall(stall_id)
2022-01-27 12:24:38 +00:00
if not stall:
2022-07-12 15:25:25 +01:00
return {"message": "Withdraw stall does not exist."}
2022-01-27 12:24:38 +00:00
if stall.wallet != wallet.wallet.id:
2022-07-12 15:25:25 +01:00
return {"message": "Not your withdraw stall."}
2022-01-27 12:24:38 +00:00
2023-01-04 21:08:28 +00:00
stall = await update_market_stall(stall_id, **data.dict())
2022-01-27 12:24:38 +00:00
else:
2023-01-04 21:08:28 +00:00
stall = await create_market_stall(data=data)
2023-01-04 11:16:20 +00:00
assert stall
2022-01-27 16:18:12 +00:00
return stall.dict()
2022-01-27 12:24:38 +00:00
2023-01-04 21:08:28 +00:00
@market_ext.delete("/api/v1/stalls/{stall_id}")
async def api_market_stall_delete(
2022-07-15 10:22:13 +01:00
stall_id: str, wallet: WalletTypeInfo = Depends(require_admin_key)
2022-07-12 15:25:25 +01:00
):
2023-01-04 21:08:28 +00:00
stall = await get_market_stall(stall_id)
2022-01-27 12:24:38 +00:00
if not stall:
2022-07-12 15:25:25 +01:00
return {"message": "Stall does not exist."}
2022-01-27 12:24:38 +00:00
if stall.wallet != wallet.wallet.id:
2022-07-12 15:25:25 +01:00
return {"message": "Not your Stall."}
2022-01-27 12:24:38 +00:00
2023-01-04 21:08:28 +00:00
await delete_market_stall(stall_id)
2022-01-27 12:24:38 +00:00
raise HTTPException(status_code=HTTPStatus.NO_CONTENT)
###Orders
2023-01-04 21:08:28 +00:00
@market_ext.get("/api/v1/orders")
async def api_market_orders(
2022-07-12 15:25:25 +01:00
wallet: WalletTypeInfo = Depends(get_key_type), all_wallets: bool = Query(False)
):
2022-01-27 12:24:38 +00:00
wallet_ids = [wallet.wallet.id]
2022-01-28 15:11:31 +00:00
if all_wallets:
2023-01-04 11:16:20 +00:00
user = await get_user(wallet.wallet.user)
wallet_ids = user.wallet_ids if user else []
2022-01-27 12:24:38 +00:00
2023-01-04 21:08:28 +00:00
orders = await get_market_orders(wallet_ids)
if not orders:
return
orders_with_details = []
for order in orders:
2023-01-04 11:16:20 +00:00
_order = order.dict()
2023-01-04 21:08:28 +00:00
_order["details"] = await get_market_order_details(_order["id"])
2023-01-04 11:16:20 +00:00
orders_with_details.append(_order)
2022-01-27 12:24:38 +00:00
try:
2022-08-18 16:20:15 +01:00
return orders_with_details # [order for order in orders]
2023-01-04 21:08:28 +00:00
# return [order.dict() for order in await get_market_orders(wallet_ids)]
2022-01-27 12:24:38 +00:00
except:
2022-07-12 15:25:25 +01:00
return {"message": "We could not retrieve the orders."}
2022-01-27 12:24:38 +00:00
2023-01-04 21:08:28 +00:00
@market_ext.get("/api/v1/orders/{order_id}")
async def api_market_order_by_id(order_id: str):
order = await get_market_order(order_id)
2023-01-04 11:16:20 +00:00
assert order
_order = order.dict()
2023-01-04 21:08:28 +00:00
_order["details"] = await get_market_order_details(order_id)
2023-01-04 11:16:20 +00:00
return _order
2023-01-04 21:08:28 +00:00
@market_ext.post("/api/v1/orders")
async def api_market_order_create(data: createOrder):
2022-08-18 10:49:04 +01:00
ref = urlsafe_short_hash()
2022-08-18 16:20:15 +01:00
2022-08-18 10:49:04 +01:00
payment_hash, payment_request = await create_invoice(
wallet_id=data.wallet,
amount=data.total,
2023-01-04 21:08:28 +00:00
memo=f"New order on Market",
2022-08-18 10:49:04 +01:00
extra={
2023-01-04 21:08:28 +00:00
"tag": "market",
2022-08-18 10:49:04 +01:00
"reference": ref,
2022-08-18 16:20:15 +01:00
},
2022-08-18 10:49:04 +01:00
)
2023-01-04 21:08:28 +00:00
order_id = await create_market_order(invoiceid=payment_hash, data=data)
2022-08-18 10:49:04 +01:00
logger.debug(f"ORDER ID {order_id}")
logger.debug(f"PRODUCTS {data.products}")
2023-01-04 21:08:28 +00:00
await create_market_order_details(order_id=order_id, data=data.products)
2022-08-18 16:20:15 +01:00
return {
"payment_hash": payment_hash,
"payment_request": payment_request,
"order_reference": ref,
}
2022-01-27 12:24:38 +00:00
2023-01-04 21:08:28 +00:00
@market_ext.get("/api/v1/orders/payments/{payment_hash}")
async def api_market_check_payment(payment_hash: str):
order = await get_market_order_invoiceid(payment_hash)
2022-08-19 11:19:45 +01:00
if not order:
raise HTTPException(
status_code=HTTPStatus.NOT_FOUND, detail="Order does not exist."
)
try:
status = await api_payment(payment_hash)
except Exception as exc:
logger.error(exc)
return {"paid": False}
return status
2022-09-12 17:01:41 +01:00
2023-01-04 21:08:28 +00:00
@market_ext.delete("/api/v1/orders/{order_id}")
async def api_market_order_delete(
2022-11-11 12:11:14 +00:00
order_id: str, wallet: WalletTypeInfo = Depends(require_admin_key)
2022-07-12 15:25:25 +01:00
):
2023-01-04 21:08:28 +00:00
order = await get_market_order(order_id)
2022-01-27 12:24:38 +00:00
if not order:
2022-07-12 15:25:25 +01:00
return {"message": "Order does not exist."}
2022-01-27 12:24:38 +00:00
if order.wallet != wallet.wallet.id:
2022-07-12 15:25:25 +01:00
return {"message": "Not your Order."}
2022-01-27 12:24:38 +00:00
2023-01-04 21:08:28 +00:00
await delete_market_order(order_id)
2022-01-27 12:24:38 +00:00
raise HTTPException(status_code=HTTPStatus.NO_CONTENT)
2023-01-04 21:08:28 +00:00
# @market_ext.get("/api/v1/orders/paid/{order_id}")
# async def api_market_order_paid(
2023-01-04 11:16:20 +00:00
# order_id, wallet: WalletTypeInfo = Depends(require_admin_key)
# ):
# await db.execute(
2023-01-04 21:08:28 +00:00
# "UPDATE market.orders SET paid = ? WHERE id = ?",
2023-01-04 11:16:20 +00:00
# (
# True,
# order_id,
# ),
# )
# return "", HTTPStatus.OK
2022-01-27 12:24:38 +00:00
2023-01-04 21:08:28 +00:00
@market_ext.get("/api/v1/order/pubkey/{payment_hash}/{pubkey}")
async def api_market_order_pubkey(payment_hash: str, pubkey: str):
await set_market_order_pubkey(payment_hash, pubkey)
2022-12-21 17:45:44 +00:00
return "", HTTPStatus.OK
2023-01-04 21:08:28 +00:00
@market_ext.get("/api/v1/orders/shipped/{order_id}")
async def api_market_order_shipped(
2022-12-30 12:00:16 +00:00
order_id, shipped: bool = Query(...), wallet: WalletTypeInfo = Depends(get_key_type)
2022-07-12 15:25:25 +01:00
):
2022-01-27 12:24:38 +00:00
await db.execute(
2023-01-04 21:08:28 +00:00
"UPDATE market.orders SET shipped = ? WHERE id = ?",
2022-01-27 12:24:38 +00:00
(
2022-12-30 12:00:16 +00:00
shipped,
2022-01-27 12:24:38 +00:00
order_id,
),
)
2023-01-04 21:08:28 +00:00
order = await db.fetchone("SELECT * FROM market.orders WHERE id = ?", (order_id,))
2022-01-27 12:24:38 +00:00
2022-10-25 11:57:01 +01:00
return order
2022-01-27 12:24:38 +00:00
###List products based on stall id
2023-01-04 21:08:28 +00:00
# @market_ext.get("/api/v1/stall/products/{stall_id}")
# async def api_market_stall_products(
2023-01-04 11:16:20 +00:00
# stall_id, wallet: WalletTypeInfo = Depends(get_key_type)
# ):
2022-01-27 12:24:38 +00:00
2023-01-04 21:08:28 +00:00
# rows = await db.fetchone("SELECT * FROM market.stalls WHERE id = ?", (stall_id,))
2023-01-04 11:16:20 +00:00
# if not rows:
# return {"message": "Stall does not exist."}
2022-01-27 12:24:38 +00:00
2023-01-04 21:08:28 +00:00
# products = db.fetchone("SELECT * FROM market.products WHERE wallet = ?", (rows[1],))
2023-01-04 11:16:20 +00:00
# if not products:
# return {"message": "No products"}
2022-01-27 12:24:38 +00:00
2023-01-04 21:08:28 +00:00
# return [products.dict() for products in await get_market_products(rows[1])]
2022-01-27 12:24:38 +00:00
###Check a product has been shipped
2023-01-04 21:08:28 +00:00
# @market_ext.get("/api/v1/stall/checkshipped/{checking_id}")
# async def api_market_stall_checkshipped(
2023-01-04 11:16:20 +00:00
# checking_id, wallet: WalletTypeInfo = Depends(get_key_type)
# ):
# rows = await db.fetchone(
2023-01-04 21:08:28 +00:00
# "SELECT * FROM market.orders WHERE invoiceid = ?", (checking_id,)
2023-01-04 11:16:20 +00:00
# )
# return {"shipped": rows["shipped"]}
2022-01-27 12:24:38 +00:00
2022-07-27 15:28:58 +01:00
##
# MARKETS
##
2022-08-16 12:19:31 +01:00
2023-01-04 21:08:28 +00:00
@market_ext.get("/api/v1/markets")
async def api_market_markets(wallet: WalletTypeInfo = Depends(get_key_type)):
# await get_market_market_stalls(market_id="FzpWnMyHQMcRppiGVua4eY")
2022-07-27 15:28:58 +01:00
try:
2023-01-04 21:11:06 +00:00
return [
market.dict() for market in await get_market_markets(wallet.wallet.user)
]
2022-07-27 15:28:58 +01:00
except:
return {"message": "We could not retrieve the markets."}
2022-08-16 12:19:31 +01:00
2023-01-04 21:08:28 +00:00
@market_ext.get("/api/v1/markets/{market_id}/stalls")
async def api_market_market_stalls(market_id: str):
stall_ids = await get_market_market_stalls(market_id)
return stall_ids
2022-09-15 15:52:08 +01:00
2023-01-04 21:08:28 +00:00
@market_ext.post("/api/v1/markets")
@market_ext.put("/api/v1/markets/{market_id}")
async def api_market_market_create(
2022-07-27 15:28:58 +01:00
data: CreateMarket,
market_id: str = None,
wallet: WalletTypeInfo = Depends(require_invoice_key),
):
if market_id:
2023-01-04 21:08:28 +00:00
market = await get_market_market(market_id)
2022-07-27 15:28:58 +01:00
if not market:
return {"message": "Market does not exist."}
if market.usr != wallet.wallet.user:
return {"message": "Not your market."}
2023-01-04 21:08:28 +00:00
market = await update_market_market(market_id, data.name)
2022-07-27 15:28:58 +01:00
else:
2023-01-04 21:08:28 +00:00
market = await create_market_market(data=data)
2022-12-30 16:51:09 +00:00
2023-01-04 11:16:20 +00:00
assert market
2023-01-04 21:08:28 +00:00
await create_market_market_stalls(market_id=market.id, data=data.stalls)
2022-07-27 15:28:58 +01:00
return market.dict()
2022-09-28 11:11:52 +01:00
2022-09-30 17:28:35 +01:00
## MESSAGES/CHAT
2022-09-30 17:29:35 +01:00
2023-01-04 21:08:28 +00:00
@market_ext.get("/api/v1/chat/messages/merchant")
async def api_get_merchant_messages(
orders: str = Query(...), wallet: WalletTypeInfo = Depends(require_admin_key)
):
2023-01-04 21:08:28 +00:00
return [msg.dict() for msg in await get_market_chat_by_merchant(orders.split(","))]
2023-01-04 21:08:28 +00:00
@market_ext.get("/api/v1/chat/messages/{room_name}")
2022-09-30 17:28:35 +01:00
async def api_get_latest_chat_msg(room_name: str, all_messages: bool = Query(False)):
2022-09-30 17:29:35 +01:00
if all_messages:
2023-01-04 21:08:28 +00:00
messages = await get_market_chat_messages(room_name)
2022-09-30 17:28:35 +01:00
else:
2023-01-04 21:08:28 +00:00
messages = await get_market_latest_chat_messages(room_name)
2022-09-30 17:28:35 +01:00
return messages
2022-12-22 18:26:34 +00:00
2023-01-04 21:08:28 +00:00
@market_ext.get("/api/v1/currencies")
2022-12-22 18:26:34 +00:00
async def api_list_currencies_available():
return list(currencies.keys())
2023-01-04 21:08:28 +00:00
@market_ext.get("/api/v1/settings")
2022-12-22 18:26:34 +00:00
async def api_get_settings(wallet: WalletTypeInfo = Depends(require_admin_key)):
user = wallet.wallet.user
2023-01-04 21:08:28 +00:00
settings = await get_market_settings(user)
2022-12-22 18:26:34 +00:00
return settings
2023-01-04 21:08:28 +00:00
@market_ext.post("/api/v1/settings")
@market_ext.put("/api/v1/settings/{usr}")
2022-12-22 18:26:34 +00:00
async def api_set_settings(
data: SetSettings,
usr: str = None,
wallet: WalletTypeInfo = Depends(require_admin_key),
2022-12-22 18:26:34 +00:00
):
if usr:
if usr != wallet.wallet.user:
2023-01-04 21:08:28 +00:00
return {"message": "Not your Market."}
2023-01-04 21:08:28 +00:00
settings = await get_market_settings(user=usr)
2023-01-04 11:16:20 +00:00
assert settings
if settings.user != wallet.wallet.user:
2023-01-04 21:08:28 +00:00
return {"message": "Not your Market."}
2023-01-04 21:08:28 +00:00
return await set_market_settings(usr, data)
2022-12-22 18:26:34 +00:00
user = wallet.wallet.user
2023-01-04 21:08:28 +00:00
return await create_market_settings(user, data)