diff --git a/lnbits/extensions/diagonalley/README.md b/lnbits/extensions/shop/README.md similarity index 53% rename from lnbits/extensions/diagonalley/README.md rename to lnbits/extensions/shop/README.md index e8035b74..86ac9ed9 100644 --- a/lnbits/extensions/diagonalley/README.md +++ b/lnbits/extensions/shop/README.md @@ -1,7 +1,7 @@ -

Diagon Alley

+

Shop

A movable market stand

Make a list of products to sell, point the list to an relay (or many), stack sats. -Diagon Alley is a movable market stand, for anon transactions. You then give permission for an relay to list those products. Delivery addresses are sent through the Lightning Network. +Shop is a movable market stand, for anon transactions. You then give permission for an relay to list those products. Delivery addresses are sent through the Lightning Network.

API endpoints

diff --git a/lnbits/extensions/diagonalley/__init__.py b/lnbits/extensions/shop/__init__.py similarity index 56% rename from lnbits/extensions/diagonalley/__init__.py rename to lnbits/extensions/shop/__init__.py index ec193e3a..8c85d8b6 100644 --- a/lnbits/extensions/diagonalley/__init__.py +++ b/lnbits/extensions/shop/__init__.py @@ -7,20 +7,20 @@ from lnbits.db import Database from lnbits.helpers import template_renderer from lnbits.tasks import catch_everything_and_restart -db = Database("ext_diagonalley") +db = Database("ext_shop") -diagonalley_ext: APIRouter = APIRouter(prefix="/diagonalley", tags=["diagonalley"]) +shop_ext: APIRouter = APIRouter(prefix="/shop", tags=["shop"]) -diagonalley_static_files = [ +shop_static_files = [ { - "path": "/diagonalley/static", - "app": StaticFiles(directory="lnbits/extensions/diagonalley/static"), - "name": "diagonalley_static", + "path": "/shop/static", + "app": StaticFiles(directory="lnbits/extensions/shop/static"), + "name": "shop_static", } ] # if 'nostradmin' not in LNBITS_ADMIN_EXTENSIONS: -# @diagonalley_ext.get("/", response_class=HTMLResponse) +# @shop_ext.get("/", response_class=HTMLResponse) # async def index(request: Request): # return template_renderer().TemplateResponse( # "error.html", {"request": request, "err": "Ask system admin to enable NostrAdmin!"} @@ -28,9 +28,9 @@ diagonalley_static_files = [ # else: -def diagonalley_renderer(): - return template_renderer(["lnbits/extensions/diagonalley/templates"]) - # return template_renderer(["lnbits/extensions/diagonalley/templates"]) +def shop_renderer(): + return template_renderer(["lnbits/extensions/shop/templates"]) + # return template_renderer(["lnbits/extensions/shop/templates"]) from .tasks import wait_for_paid_invoices @@ -38,6 +38,6 @@ from .views import * # noqa from .views_api import * # noqa -def diagonalley_start(): +def shop_start(): loop = asyncio.get_event_loop() loop.create_task(catch_everything_and_restart(wait_for_paid_invoices)) diff --git a/lnbits/extensions/diagonalley/config.json b/lnbits/extensions/shop/config.json similarity index 100% rename from lnbits/extensions/diagonalley/config.json rename to lnbits/extensions/shop/config.json diff --git a/lnbits/extensions/diagonalley/crud.py b/lnbits/extensions/shop/crud.py similarity index 56% rename from lnbits/extensions/diagonalley/crud.py rename to lnbits/extensions/shop/crud.py index f9601732..e2e5723a 100644 --- a/lnbits/extensions/diagonalley/crud.py +++ b/lnbits/extensions/shop/crud.py @@ -29,11 +29,11 @@ from .models import ( ###Products -async def create_diagonalley_product(data: createProduct) -> Products: +async def create_shop_product(data: createProduct) -> Products: product_id = urlsafe_short_hash() await db.execute( f""" - INSERT INTO diagonalley.products (id, stall, product, categories, description, image, price, quantity) + INSERT INTO shop.products (id, stall, product, categories, description, image, price, quantity) VALUES (?, ?, ?, ?, ?, ?, ?, ?) """, ( @@ -47,59 +47,59 @@ async def create_diagonalley_product(data: createProduct) -> Products: data.quantity, ), ) - product = await get_diagonalley_product(product_id) + product = await get_shop_product(product_id) assert product, "Newly created product couldn't be retrieved" return product -async def update_diagonalley_product(product_id: str, **kwargs) -> Optional[Stalls]: +async def update_shop_product(product_id: str, **kwargs) -> Optional[Stalls]: q = ", ".join([f"{field[0]} = ?" for field in kwargs.items()]) await db.execute( - f"UPDATE diagonalley.products SET {q} WHERE id = ?", + f"UPDATE shop.products SET {q} WHERE id = ?", (*kwargs.values(), product_id), ) row = await db.fetchone( - "SELECT * FROM diagonalley.products WHERE id = ?", (product_id,) + "SELECT * FROM shop.products WHERE id = ?", (product_id,) ) return Products(**row) if row else None -async def get_diagonalley_product(product_id: str) -> Optional[Products]: +async def get_shop_product(product_id: str) -> Optional[Products]: row = await db.fetchone( - "SELECT * FROM diagonalley.products WHERE id = ?", (product_id,) + "SELECT * FROM shop.products WHERE id = ?", (product_id,) ) return Products(**row) if row else None -async def get_diagonalley_products(stall_ids: Union[str, List[str]]) -> List[Products]: +async def get_shop_products(stall_ids: Union[str, List[str]]) -> List[Products]: if isinstance(stall_ids, str): stall_ids = [stall_ids] - # with open_ext_db("diagonalley") as db: + # with open_ext_db("shop") as db: q = ",".join(["?"] * len(stall_ids)) rows = await db.fetchall( f""" - SELECT * FROM diagonalley.products WHERE stall IN ({q}) + SELECT * FROM shop.products WHERE stall IN ({q}) """, (*stall_ids,), ) return [Products(**row) for row in rows] -async def delete_diagonalley_product(product_id: str) -> None: - await db.execute("DELETE FROM diagonalley.products WHERE id = ?", (product_id,)) +async def delete_shop_product(product_id: str) -> None: + await db.execute("DELETE FROM shop.products WHERE id = ?", (product_id,)) ###zones -async def create_diagonalley_zone(user, data: createZones) -> Zones: +async def create_shop_zone(user, data: createZones) -> Zones: zone_id = urlsafe_short_hash() await db.execute( f""" - INSERT INTO diagonalley.zones ( + INSERT INTO shop.zones ( id, "user", cost, @@ -111,45 +111,45 @@ async def create_diagonalley_zone(user, data: createZones) -> Zones: (zone_id, user, data.cost, data.countries.lower()), ) - zone = await get_diagonalley_zone(zone_id) + zone = await get_shop_zone(zone_id) assert zone, "Newly created zone couldn't be retrieved" return zone -async def update_diagonalley_zone(zone_id: str, **kwargs) -> Optional[Zones]: +async def update_shop_zone(zone_id: str, **kwargs) -> Optional[Zones]: q = ", ".join([f"{field[0]} = ?" for field in kwargs.items()]) await db.execute( - f"UPDATE diagonalley.zones SET {q} WHERE id = ?", + f"UPDATE shop.zones SET {q} WHERE id = ?", (*kwargs.values(), zone_id), ) - row = await db.fetchone("SELECT * FROM diagonalley.zones WHERE id = ?", (zone_id,)) + row = await db.fetchone("SELECT * FROM shop.zones WHERE id = ?", (zone_id,)) return Zones(**row) if row else None -async def get_diagonalley_zone(zone_id: str) -> Optional[Zones]: - row = await db.fetchone("SELECT * FROM diagonalley.zones WHERE id = ?", (zone_id,)) +async def get_shop_zone(zone_id: str) -> Optional[Zones]: + row = await db.fetchone("SELECT * FROM shop.zones WHERE id = ?", (zone_id,)) return Zones(**row) if row else None -async def get_diagonalley_zones(user: str) -> List[Zones]: +async def get_shop_zones(user: str) -> List[Zones]: rows = await db.fetchall( - 'SELECT * FROM diagonalley.zones WHERE "user" = ?', (user,) + 'SELECT * FROM shop.zones WHERE "user" = ?', (user,) ) return [Zones(**row) for row in rows] -async def delete_diagonalley_zone(zone_id: str) -> None: - await db.execute("DELETE FROM diagonalley.zones WHERE id = ?", (zone_id,)) +async def delete_shop_zone(zone_id: str) -> None: + await db.execute("DELETE FROM shop.zones WHERE id = ?", (zone_id,)) ###Stalls -async def create_diagonalley_stall(data: createStalls) -> Stalls: +async def create_shop_stall(data: createStalls) -> Stalls: stall_id = urlsafe_short_hash() await db.execute( f""" - INSERT INTO diagonalley.stalls ( + INSERT INTO shop.stalls ( id, wallet, name, @@ -171,62 +171,62 @@ async def create_diagonalley_stall(data: createStalls) -> Stalls: ), ) - stall = await get_diagonalley_stall(stall_id) + stall = await get_shop_stall(stall_id) assert stall, "Newly created stall couldn't be retrieved" return stall -async def update_diagonalley_stall(stall_id: str, **kwargs) -> Optional[Stalls]: +async def update_shop_stall(stall_id: str, **kwargs) -> Optional[Stalls]: q = ", ".join([f"{field[0]} = ?" for field in kwargs.items()]) await db.execute( - f"UPDATE diagonalley.stalls SET {q} WHERE id = ?", + f"UPDATE shop.stalls SET {q} WHERE id = ?", (*kwargs.values(), stall_id), ) row = await db.fetchone( - "SELECT * FROM diagonalley.stalls WHERE id = ?", (stall_id,) + "SELECT * FROM shop.stalls WHERE id = ?", (stall_id,) ) return Stalls(**row) if row else None -async def get_diagonalley_stall(stall_id: str) -> Optional[Stalls]: +async def get_shop_stall(stall_id: str) -> Optional[Stalls]: row = await db.fetchone( - "SELECT * FROM diagonalley.stalls WHERE id = ?", (stall_id,) + "SELECT * FROM shop.stalls WHERE id = ?", (stall_id,) ) return Stalls(**row) if row else None -async def get_diagonalley_stalls(wallet_ids: Union[str, List[str]]) -> List[Stalls]: +async def get_shop_stalls(wallet_ids: Union[str, List[str]]) -> List[Stalls]: q = ",".join(["?"] * len(wallet_ids)) rows = await db.fetchall( - f"SELECT * FROM diagonalley.stalls WHERE wallet IN ({q})", (*wallet_ids,) + f"SELECT * FROM shop.stalls WHERE wallet IN ({q})", (*wallet_ids,) ) return [Stalls(**row) for row in rows] -async def get_diagonalley_stalls_by_ids( +async def get_shop_stalls_by_ids( stall_ids: Union[str, List[str]] ) -> List[Stalls]: q = ",".join(["?"] * len(stall_ids)) rows = await db.fetchall( - f"SELECT * FROM diagonalley.stalls WHERE id IN ({q})", (*stall_ids,) + f"SELECT * FROM shop.stalls WHERE id IN ({q})", (*stall_ids,) ) return [Stalls(**row) for row in rows] -async def delete_diagonalley_stall(stall_id: str) -> None: - await db.execute("DELETE FROM diagonalley.stalls WHERE id = ?", (stall_id,)) +async def delete_shop_stall(stall_id: str) -> None: + await db.execute("DELETE FROM shop.stalls WHERE id = ?", (stall_id,)) ###Orders -async def create_diagonalley_order(data: createOrder, invoiceid: str) -> Orders: +async def create_shop_order(data: createOrder, invoiceid: str) -> Orders: returning = "" if db.type == SQLITE else "RETURNING ID" method = db.execute if db.type == SQLITE else db.fetchone result = await (method)( f""" - INSERT INTO diagonalley.orders (wallet, shippingzone, address, email, total, invoiceid, paid, shipped) + INSERT INTO shop.orders (wallet, shippingzone, address, email, total, invoiceid, paid, shipped) VALUES (?, ?, ?, ?, ?, ?, ?, ?) {returning} """, @@ -245,19 +245,19 @@ async def create_diagonalley_order(data: createOrder, invoiceid: str) -> Orders: return result._result_proxy.lastrowid else: return result[0] - # link = await get_diagonalley_order(link.id) + # link = await get_shop_order(link.id) # assert link, "Newly created link couldn't be retrieved" # return link -async def create_diagonalley_order_details( +async def create_shop_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, order_id, product_id, quantity) + INSERT INTO shop.order_details (id, order_id, product_id, quantity) VALUES (?, ?, ?, ?) """, ( @@ -267,36 +267,36 @@ async def create_diagonalley_order_details( item.quantity, ), ) - order_details = await get_diagonalley_order_details(order_id) + order_details = await get_shop_order_details(order_id) return order_details -async def get_diagonalley_order_details(order_id: str) -> List[OrderDetail]: +async def get_shop_order_details(order_id: str) -> List[OrderDetail]: rows = await db.fetchall( - f"SELECT * FROM diagonalley.order_details WHERE order_id = ?", (order_id,) + f"SELECT * FROM shop.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_shop_order(order_id: str) -> Optional[Orders]: row = await db.fetchone( - "SELECT * FROM diagonalley.orders WHERE id = ?", (order_id,) + "SELECT * FROM shop.orders WHERE id = ?", (order_id,) ) return Orders(**row) if row else None -async def get_diagonalley_order_invoiceid(invoice_id: str) -> Optional[Orders]: +async def get_shop_order_invoiceid(invoice_id: str) -> Optional[Orders]: row = await db.fetchone( - "SELECT * FROM diagonalley.orders WHERE invoiceid = ?", (invoice_id,) + "SELECT * FROM shop.orders WHERE invoiceid = ?", (invoice_id,) ) return Orders(**row) if row else None -async def set_diagonalley_order_paid(payment_hash: str) -> Orders: +async def set_shop_order_paid(payment_hash: str) -> Orders: await db.execute( """ - UPDATE diagonalley.orders + UPDATE shop.orders SET paid = true WHERE invoiceid = ? """, @@ -304,10 +304,10 @@ async def set_diagonalley_order_paid(payment_hash: str) -> Orders: ) -async def set_diagonalley_order_pubkey(payment_hash: str, pubkey: str): +async def set_shop_order_pubkey(payment_hash: str, pubkey: str): await db.execute( """ - UPDATE diagonalley.orders + UPDATE shop.orders SET pubkey = ? WHERE invoiceid = ? """, @@ -318,7 +318,7 @@ async def set_diagonalley_order_pubkey(payment_hash: str, pubkey: str): ) -async def update_diagonalley_product_stock(products): +async def update_shop_product_stock(products): q = "\n".join( [f"""WHEN id='{p.product_id}' THEN quantity - {p.quantity}""" for p in products] @@ -327,7 +327,7 @@ async def update_diagonalley_product_stock(products): await db.execute( f""" - UPDATE diagonalley.products + UPDATE shop.products SET quantity=(CASE {q} END) @@ -337,53 +337,53 @@ async def update_diagonalley_product_stock(products): ) -async def get_diagonalley_orders(wallet_ids: Union[str, List[str]]) -> List[Orders]: +async def get_shop_orders(wallet_ids: Union[str, List[str]]) -> List[Orders]: if isinstance(wallet_ids, str): wallet_ids = [wallet_ids] q = ",".join(["?"] * len(wallet_ids)) rows = await db.fetchall( - f"SELECT * FROM diagonalley.orders WHERE wallet IN ({q})", (*wallet_ids,) + f"SELECT * FROM shop.orders WHERE wallet IN ({q})", (*wallet_ids,) ) # return [Orders(**row) for row in rows] -async def delete_diagonalley_order(order_id: str) -> None: - await db.execute("DELETE FROM diagonalley.orders WHERE id = ?", (order_id,)) +async def delete_shop_order(order_id: str) -> None: + await db.execute("DELETE FROM shop.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,)) +async def get_shop_markets(user: str) -> List[Market]: + rows = await db.fetchall("SELECT * FROM shop.markets WHERE usr = ?", (user,)) return [Market(**row) for row in rows] -async def get_diagonalley_market(market_id: str) -> Optional[Market]: +async def get_shop_market(market_id: str) -> Optional[Market]: row = await db.fetchone( - "SELECT * FROM diagonalley.markets WHERE id = ?", (market_id,) + "SELECT * FROM shop.markets WHERE id = ?", (market_id,) ) return Market(**row) if row else None -async def get_diagonalley_market_stalls(market_id: str): +async def get_shop_market_stalls(market_id: str): rows = await db.fetchall( - "SELECT * FROM diagonalley.market_stalls WHERE marketid = ?", (market_id,) + "SELECT * FROM shop.market_stalls WHERE marketid = ?", (market_id,) ) ids = [row["stallid"] for row in rows] - return await get_diagonalley_stalls_by_ids(ids) + return await get_shop_stalls_by_ids(ids) -async def create_diagonalley_market(data: CreateMarket): +async def create_shop_market(data: CreateMarket): market_id = urlsafe_short_hash() await db.execute( """ - INSERT INTO diagonalley.markets (id, usr, name) + INSERT INTO shop.markets (id, usr, name) VALUES (?, ?, ?) """, ( @@ -392,12 +392,12 @@ async def create_diagonalley_market(data: CreateMarket): data.name, ), ) - market = await get_diagonalley_market(market_id) + market = await get_shop_market(market_id) assert market, "Newly created market couldn't be retrieved" return market -async def create_diagonalley_market_stalls( +async def create_shop_market_stalls( market_id: str, data: List[CreateMarketStalls] ): for stallid in data: @@ -405,7 +405,7 @@ async def create_diagonalley_market_stalls( await db.execute( """ - INSERT INTO diagonalley.market_stalls (id, marketid, stallid) + INSERT INTO shop.market_stalls (id, marketid, stallid) VALUES (?, ?, ?) """, ( @@ -414,11 +414,11 @@ async def create_diagonalley_market_stalls( stallid, ), ) - market_stalls = await get_diagonalley_market_stalls(market_id) + market_stalls = await get_shop_market_stalls(market_id) return market_stalls -async def update_diagonalley_market(market_id): +async def update_shop_market(market_id): pass @@ -428,7 +428,7 @@ async def update_diagonalley_market(market_id): async def create_chat_message(data: CreateChatMessage): await db.execute( """ - INSERT INTO diagonalley.messages (msg, pubkey, id_conversation) + INSERT INTO shop.messages (msg, pubkey, id_conversation) VALUES (?, ?, ?) """, ( @@ -439,29 +439,29 @@ async def create_chat_message(data: CreateChatMessage): ) -async def get_diagonalley_latest_chat_messages(room_name: str): +async def get_shop_latest_chat_messages(room_name: str): rows = await db.fetchall( - "SELECT * FROM diagonalley.messages WHERE id_conversation = ? ORDER BY timestamp DESC LIMIT 20", + "SELECT * FROM shop.messages WHERE id_conversation = ? ORDER BY timestamp DESC LIMIT 20", (room_name,), ) return [ChatMessage(**row) for row in rows] -async def get_diagonalley_chat_messages(room_name: str): +async def get_shop_chat_messages(room_name: str): rows = await db.fetchall( - "SELECT * FROM diagonalley.messages WHERE id_conversation = ? ORDER BY timestamp DESC", + "SELECT * FROM shop.messages WHERE id_conversation = ? ORDER BY timestamp DESC", (room_name,), ) return [ChatMessage(**row) for row in rows] -async def get_diagonalley_chat_by_merchant(ids: List[str]) -> List[ChatMessage]: +async def get_shop_chat_by_merchant(ids: List[str]) -> List[ChatMessage]: q = ",".join(["?"] * len(ids)) rows = await db.fetchall( - f"SELECT * FROM diagonalley.messages WHERE id_conversation IN ({q})", + f"SELECT * FROM shop.messages WHERE id_conversation IN ({q})", (*ids,), ) return [ChatMessage(**row) for row in rows] diff --git a/lnbits/extensions/diagonalley/migrations.py b/lnbits/extensions/shop/migrations.py similarity index 84% rename from lnbits/extensions/diagonalley/migrations.py rename to lnbits/extensions/shop/migrations.py index f877e770..fd89d9df 100644 --- a/lnbits/extensions/diagonalley/migrations.py +++ b/lnbits/extensions/shop/migrations.py @@ -4,7 +4,7 @@ async def m001_initial(db): """ await db.execute( """ - CREATE TABLE diagonalley.stalls ( + CREATE TABLE shop.stalls ( id TEXT PRIMARY KEY, wallet TEXT NOT NULL, name TEXT NOT NULL, @@ -22,7 +22,7 @@ async def m001_initial(db): """ await db.execute( f""" - CREATE TABLE diagonalley.products ( + CREATE TABLE shop.products ( id TEXT PRIMARY KEY, stall TEXT NOT NULL REFERENCES {db.references_schema}stalls (id), product TEXT NOT NULL, @@ -41,7 +41,7 @@ async def m001_initial(db): """ await db.execute( """ - CREATE TABLE diagonalley.zones ( + CREATE TABLE shop.zones ( id TEXT PRIMARY KEY, "user" TEXT NOT NULL, cost TEXT NOT NULL, @@ -55,7 +55,7 @@ async def m001_initial(db): """ await db.execute( f""" - CREATE TABLE diagonalley.orders ( + CREATE TABLE shop.orders ( id {db.serial_primary_key}, wallet TEXT NOT NULL, username TEXT, @@ -79,7 +79,7 @@ async def m001_initial(db): """ await db.execute( f""" - CREATE TABLE diagonalley.order_details ( + CREATE TABLE shop.order_details ( id TEXT PRIMARY KEY, order_id INTEGER NOT NULL REFERENCES {db.references_schema}orders (id), product_id TEXT NOT NULL REFERENCES {db.references_schema}products (id), @@ -93,7 +93,7 @@ async def m001_initial(db): """ await db.execute( """ - CREATE TABLE diagonalley.markets ( + CREATE TABLE shop.markets ( id TEXT PRIMARY KEY, usr TEXT NOT NULL, name TEXT @@ -106,7 +106,7 @@ async def m001_initial(db): """ await db.execute( f""" - CREATE TABLE diagonalley.market_stalls ( + CREATE TABLE shop.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) @@ -121,7 +121,7 @@ async def m002_add_chat_messages(db): """ await db.execute( f""" - CREATE TABLE diagonalley.messages ( + CREATE TABLE shop.messages ( id {db.serial_primary_key}, msg TEXT NOT NULL, pubkey TEXT NOT NULL, @@ -138,8 +138,8 @@ async def m002_add_chat_messages(db): Create indexes for message fetching """ await db.execute( - "CREATE INDEX idx_messages_timestamp ON diagonalley.messages (timestamp DESC)" + "CREATE INDEX idx_messages_timestamp ON shop.messages (timestamp DESC)" ) await db.execute( - "CREATE INDEX idx_messages_conversations ON diagonalley.messages (id_conversation)" + "CREATE INDEX idx_messages_conversations ON shop.messages (id_conversation)" ) diff --git a/lnbits/extensions/diagonalley/models.py b/lnbits/extensions/shop/models.py similarity index 100% rename from lnbits/extensions/diagonalley/models.py rename to lnbits/extensions/shop/models.py diff --git a/lnbits/extensions/diagonalley/notifier.py b/lnbits/extensions/shop/notifier.py similarity index 95% rename from lnbits/extensions/diagonalley/notifier.py rename to lnbits/extensions/shop/notifier.py index f99cc4bf..0030001c 100644 --- a/lnbits/extensions/diagonalley/notifier.py +++ b/lnbits/extensions/shop/notifier.py @@ -10,8 +10,8 @@ from collections import defaultdict from fastapi import WebSocket from loguru import logger -from lnbits.extensions.diagonalley.crud import create_chat_message -from lnbits.extensions.diagonalley.models import CreateChatMessage +from lnbits.extensions.shop.crud import create_chat_message +from lnbits.extensions.shop.models import CreateChatMessage class Notifier: diff --git a/lnbits/extensions/diagonalley/static/images/placeholder.png b/lnbits/extensions/shop/static/images/placeholder.png similarity index 100% rename from lnbits/extensions/diagonalley/static/images/placeholder.png rename to lnbits/extensions/shop/static/images/placeholder.png diff --git a/lnbits/extensions/diagonalley/tasks.py b/lnbits/extensions/shop/tasks.py similarity index 57% rename from lnbits/extensions/diagonalley/tasks.py rename to lnbits/extensions/shop/tasks.py index cd9e18a8..0e742466 100644 --- a/lnbits/extensions/diagonalley/tasks.py +++ b/lnbits/extensions/shop/tasks.py @@ -6,10 +6,10 @@ from lnbits.core.models import Payment from lnbits.tasks import register_invoice_listener from .crud import ( - get_diagonalley_order_details, - get_diagonalley_order_invoiceid, - set_diagonalley_order_paid, - update_diagonalley_product_stock, + get_shop_order_details, + get_shop_order_invoiceid, + set_shop_order_paid, + update_shop_product_stock, ) @@ -23,17 +23,17 @@ async def wait_for_paid_invoices(): async def on_invoice_paid(payment: Payment) -> None: - if payment.extra.get("tag") != "diagonalley": + if payment.extra.get("tag") != "shop": return - order = await get_diagonalley_order_invoiceid(payment.payment_hash) + order = await get_shop_order_invoiceid(payment.payment_hash) if not order: logger.error("this should never happen", payment) return # set order as paid - await set_diagonalley_order_paid(payment.payment_hash) + await set_shop_order_paid(payment.payment_hash) # deduct items sold from stock - details = await get_diagonalley_order_details(order.id) - await update_diagonalley_product_stock(details) + details = await get_shop_order_details(order.id) + await update_shop_product_stock(details) diff --git a/lnbits/extensions/diagonalley/templates/diagonalley/_api_docs.html b/lnbits/extensions/shop/templates/diagonalley/_api_docs.html similarity index 92% rename from lnbits/extensions/diagonalley/templates/diagonalley/_api_docs.html rename to lnbits/extensions/shop/templates/diagonalley/_api_docs.html index 5418deba..b0ce1dfe 100644 --- a/lnbits/extensions/diagonalley/templates/diagonalley/_api_docs.html +++ b/lnbits/extensions/shop/templates/diagonalley/_api_docs.html @@ -7,7 +7,7 @@
- Diagon Alley: Decentralised Market-Stalls + Shop: Decentralised Market-Stalls

Each Stall has its own keys!

@@ -25,7 +25,7 @@ Ratings are managed by the relay. Your stall can be listed in multiple relays, even over TOR, if you wish to be anonymous.
More information on the - Diagon Alley ProtocolShop Protocol
Created by, Ben Arc GET - /diagonalley/api/v1/stall/products/<relay_id>
Body (application/json)
@@ -76,7 +76,7 @@ POST - /diagonalley/api/v1/stall/order/<relay_id>
Body (application/json)
GET - /diagonalley/api/v1/stall/checkshipped/<checking_id>
Headers
diff --git a/lnbits/extensions/diagonalley/templates/diagonalley/index.html b/lnbits/extensions/shop/templates/diagonalley/index.html similarity index 96% rename from lnbits/extensions/diagonalley/templates/diagonalley/index.html rename to lnbits/extensions/shop/templates/diagonalley/index.html index 6d98f297..209c770c 100644 --- a/lnbits/extensions/diagonalley/templates/diagonalley/index.html +++ b/lnbits/extensions/shop/templates/diagonalley/index.html @@ -398,9 +398,9 @@ -
Diagon Alley
+
Shop
- Step inside the Leaky Cauldron and enter the Diagon Alley. Make this + Step inside the Leaky Cauldron and enter the Shop. Make this market available on Nostr!
@@ -412,7 +412,7 @@ checked-icon="check" color="green" unchecked-icon="clear" - label='"Diagon Alley" mode (Nostr)' + label='"Shop" mode (Nostr)' @input="toggleDA" > Coming soon... Stall simple UI shopping cart @@ -777,7 +777,7 @@ icon="storefront" :color="($q.dark.isActive) ? 'grey-7' : 'grey-5'" type="a" - :href="'/diagonalley/market/' + props.row.id" + :href="'/shop/market/' + props.row.id" target="_blank" > Link to pass to stall relay @@ -921,12 +921,12 @@
- LNbits Diagon Alley Extension, powered by Nostr + LNbits Shop Extension, powered by Nostr
- {% include "diagonalley/_api_docs.html" %} + {% include "shop/_api_docs.html" %}
@@ -1062,7 +1062,7 @@ -
How to use Diagon Alley
+
How to use Shop
{ if (response.data) { obj.stores = response.data.map(s => s.name).toString() @@ -1503,7 +1503,7 @@ LNbits.api .request( 'GET', - '/diagonalley/api/v1/keys', + '/shop/api/v1/keys', this.g.user.wallets[0].adminkey ) .then(response => { @@ -1512,7 +1512,7 @@ this.stallDialog.data.publickey = this.keys.pubkey this.stallDialog.data.privatekey = this.keys.privkey this.$q.localStorage.set( - `lnbits.diagonalley.${this.g.user.id}`, + `lnbits.shop.${this.g.user.id}`, this.keys ) } @@ -1523,7 +1523,7 @@ }, restoreKeys() { let keys = this.$q.localStorage.getItem( - `lnbits.diagonalley.${this.g.user.id}` + `lnbits.shop.${this.g.user.id}` ) if (keys) { this.keys = keys @@ -1580,7 +1580,7 @@ LNbits.api .request( 'GET', - '/diagonalley/api/v1/stalls?all_wallets=true', + '/shop/api/v1/stalls?all_wallets=true', self.g.user.wallets[0].adminkey ) .then(function (response) { @@ -1636,7 +1636,7 @@ LNbits.api .request( 'PUT', - '/diagonalley/api/v1/stalls/' + data.id, + '/shop/api/v1/stalls/' + data.id, _.findWhere(self.g.user.wallets, { id: self.stallDialog.data.wallet }).inkey, @@ -1658,7 +1658,7 @@ LNbits.api .request( 'POST', - '/diagonalley/api/v1/stalls', + '/shop/api/v1/stalls', _.findWhere(self.g.user.wallets, { id: self.stallDialog.data.wallet }).inkey, @@ -1685,7 +1685,7 @@ LNbits.api .request( 'DELETE', - '/diagonalley/api/v1/stalls/' + stallId, + '/shop/api/v1/stalls/' + stallId, _.findWhere(self.g.user.wallets, {id: stall.wallet}).adminkey ) .then(function (response) { @@ -1710,7 +1710,7 @@ LNbits.api .request( 'GET', - '/diagonalley/api/v1/products?all_stalls=true', + '/shop/api/v1/products?all_stalls=true', self.g.user.wallets[0].inkey ) .then(function (response) { @@ -1783,7 +1783,7 @@ LNbits.api .request( 'PUT', - '/diagonalley/api/v1/products/' + data.id, + '/shop/api/v1/products/' + data.id, _.findWhere(self.g.user.wallets, { id: wallet }).inkey, @@ -1809,7 +1809,7 @@ LNbits.api .request( 'POST', - '/diagonalley/api/v1/products', + '/shop/api/v1/products', _.findWhere(self.g.user.wallets, {id: walletId}).inkey, data ) @@ -1831,7 +1831,7 @@ LNbits.api .request( 'DELETE', - '/diagonalley/api/v1/products/' + productId, + '/shop/api/v1/products/' + productId, _.findWhere(this.g.user.wallets, {id: walletId}).adminkey ) .then(() => { @@ -1856,7 +1856,7 @@ LNbits.api .request( 'GET', - '/diagonalley/api/v1/zones', + '/shop/api/v1/zones', this.g.user.wallets[0].inkey ) .then(function (response) { @@ -1896,7 +1896,7 @@ LNbits.api .request( 'POST', - '/diagonalley/api/v1/zones/' + data.id, + '/shop/api/v1/zones/' + data.id, self.g.user.wallets[0].adminkey, data ) @@ -1918,7 +1918,7 @@ LNbits.api .request( 'POST', - '/diagonalley/api/v1/zones', + '/shop/api/v1/zones', self.g.user.wallets[0].inkey, data ) @@ -1942,7 +1942,7 @@ LNbits.api .request( 'DELETE', - '/diagonalley/api/v1/zones/' + zoneId, + '/shop/api/v1/zones/' + zoneId, self.g.user.wallets[0].adminkey ) .then(function (response) { @@ -1965,7 +1965,7 @@ LNbits.api .request( 'GET', - '/diagonalley/api/v1/markets', + '/shop/api/v1/markets', this.g.user.wallets[0].inkey ) .then(response => { @@ -2003,7 +2003,7 @@ LNbits.api .request( 'PUT', - '/diagonalley/api/v1/shops' + data.id, + '/shop/api/v1/shops' + data.id, _.findWhere(self.g.user.wallets, { id: self.marketDialog.data.wallet }).inkey, @@ -2026,7 +2026,7 @@ LNbits.api .request( 'POST', - '/diagonalley/api/v1/markets', + '/shop/api/v1/markets', this.g.user.wallets[0].inkey, data ) @@ -2050,7 +2050,7 @@ LNbits.api .request( 'DELETE', - '/diagonalley/api/v1/shops/' + shopId, + '/shop/api/v1/shops/' + shopId, _.findWhere(self.g.user.wallets, {id: shop.wallet}).inkey ) .then(function (response) { @@ -2075,7 +2075,7 @@ await LNbits.api .request( 'GET', - '/diagonalley/api/v1/orders?all_wallets=true', + '/shop/api/v1/orders?all_wallets=true', this.g.user.wallets[0].inkey ) .then(function (response) { @@ -2099,7 +2099,7 @@ LNbits.api .request( 'POST', - '/diagonalley/api/v1/orders', + '/shop/api/v1/orders', _.findWhere(self.g.user.wallets, {id: self.orderDialog.data.wallet}) .inkey, data @@ -2123,7 +2123,7 @@ LNbits.api .request( 'DELETE', - '/diagonalley/api/v1/orders/' + orderId, + '/shop/api/v1/orders/' + orderId, _.findWhere(self.g.user.wallets, {id: order.wallet}).adminkey ) .then(function (response) { @@ -2140,7 +2140,7 @@ LNbits.api .request( 'GET', - '/diagonalley/api/v1/orders/shipped/' + order_id, + '/shop/api/v1/orders/shipped/' + order_id, this.g.user.wallets[0].inkey ) .then(response => { @@ -2161,7 +2161,7 @@ await LNbits.api .request( 'GET', - `/diagonalley/api/v1/chat/messages/merchant?orders=${this.orders + `/shop/api/v1/chat/messages/merchant?orders=${this.orders .map(o => o.invoiceid) .toString()}`, this.g.user.wallets[0].adminkey @@ -2176,7 +2176,7 @@ }, updateLastSeenMsg(id) { let data = this.$q.localStorage.getItem( - `lnbits.diagonalley.${this.g.user.id}` + `lnbits.shop.${this.g.user.id}` ) let chat = { ...data.chat, @@ -2186,7 +2186,7 @@ ] } } - this.$q.localStorage.set(`lnbits.diagonalley.${this.g.user.id}`, { + this.$q.localStorage.set(`lnbits.shop.${this.g.user.id}`, { ...data, chat }) @@ -2194,7 +2194,7 @@ }, checkUnreadMessages() { let lastMsgs = this.$q.localStorage.getItem( - `lnbits.diagonalley.${this.g.user.id}` + `lnbits.shop.${this.g.user.id}` ).chat for (let key in this.messages) { let idx = this.orders.findIndex(f => f.invoiceid == key) @@ -2253,14 +2253,14 @@ ws_scheme = 'ws://' } ws = new WebSocket( - ws_scheme + location.host + '/diagonalley/ws/' + room_name + ws_scheme + location.host + '/shop/ws/' + room_name ) function checkWebSocket(event) { if (ws.readyState === WebSocket.CLOSED) { console.log('WebSocket CLOSED: Reopening') ws = new WebSocket( - ws_scheme + location.host + '/diagonalley/ws/' + room_name + ws_scheme + location.host + '/shop/ws/' + room_name ) } } @@ -2293,7 +2293,7 @@ this.getMarkets() await this.getAllMessages() let keys = this.$q.localStorage.getItem( - `lnbits.diagonalley.${this.g.user.id}` + `lnbits.shop.${this.g.user.id}` ) if (keys) { this.keys = keys diff --git a/lnbits/extensions/diagonalley/templates/diagonalley/market.html b/lnbits/extensions/shop/templates/diagonalley/market.html similarity index 97% rename from lnbits/extensions/diagonalley/templates/diagonalley/market.html rename to lnbits/extensions/shop/templates/diagonalley/market.html index b1a3ce88..a9585bca 100644 --- a/lnbits/extensions/diagonalley/templates/diagonalley/market.html +++ b/lnbits/extensions/shop/templates/diagonalley/market.html @@ -76,7 +76,7 @@ {% raw %} { this.checkoutDialog = {show: false, data: {}} @@ -378,7 +378,7 @@ LNbits.api .request( 'GET', - `/diagonalley/api/v1/orders/payments/${this.qrCodeDialog.data.payment_hash}` + `/shop/api/v1/orders/payments/${this.qrCodeDialog.data.payment_hash}` ) .then(res => { if (res.data.paid) { diff --git a/lnbits/extensions/diagonalley/templates/diagonalley/order.html b/lnbits/extensions/shop/templates/diagonalley/order.html similarity index 95% rename from lnbits/extensions/diagonalley/templates/diagonalley/order.html rename to lnbits/extensions/shop/templates/diagonalley/order.html index c8b90926..b6a23a23 100644 --- a/lnbits/extensions/diagonalley/templates/diagonalley/order.html +++ b/lnbits/extensions/shop/templates/diagonalley/order.html @@ -320,8 +320,8 @@ }, restoreKeys() { this.user.keys = this.keysDialog.data - let data = this.$q.localStorage.getItem(`lnbits.diagonalley.data`) - this.$q.localStorage.set(`lnbits.diagonalley.data`, { + let data = this.$q.localStorage.getItem(`lnbits.shop.data`) + this.$q.localStorage.set(`lnbits.shop.data`, { ...data, keys: this.user.keys }) @@ -332,7 +332,7 @@ LNbits.utils .confirmDialog('Are you sure you want to delete your stored data?') .onOk(() => { - this.$q.localStorage.remove('lnbits.diagonalley.data') + this.$q.localStorage.remove('lnbits.shop.data') this.user = null }) }, @@ -342,7 +342,7 @@ return return await LNbits.api - .request('GET', `/diagonalley/api/v1/keys`, null) + .request('GET', `/shop/api/v1/keys`, null) .then(response => { if (response.data) { let data = { @@ -363,7 +363,7 @@ await LNbits.api .request( 'GET', - `/diagonalley/api/v1/chat/messages/${room_name}${ + `/shop/api/v1/chat/messages/${room_name}${ all ? '?all_messages=true' : '' }` ) @@ -397,14 +397,14 @@ ws_scheme = 'ws://' } ws = new WebSocket( - ws_scheme + location.host + '/diagonalley/ws/' + room_name + ws_scheme + location.host + '/shop/ws/' + room_name ) function checkWebSocket(event) { if (ws.readyState === WebSocket.CLOSED) { console.log('WebSocket CLOSED: Reopening') ws = new WebSocket( - ws_scheme + location.host + '/diagonalley/ws/' + room_name + ws_scheme + location.host + '/shop/ws/' + room_name ) } } @@ -447,7 +447,7 @@ }) let data = - this.$q.localStorage.getItem(`lnbits.diagonalley.data`) || false + this.$q.localStorage.getItem(`lnbits.shop.data`) || false if (data) { this.user = data @@ -468,7 +468,7 @@ await this.getMessages(order_id) - this.$q.localStorage.set(`lnbits.diagonalley.data`, this.user) + this.$q.localStorage.set(`lnbits.shop.data`, this.user) this.startChat(order_id) } }) diff --git a/lnbits/extensions/diagonalley/templates/diagonalley/product.html b/lnbits/extensions/shop/templates/diagonalley/product.html similarity index 100% rename from lnbits/extensions/diagonalley/templates/diagonalley/product.html rename to lnbits/extensions/shop/templates/diagonalley/product.html diff --git a/lnbits/extensions/diagonalley/templates/diagonalley/stall.html b/lnbits/extensions/shop/templates/diagonalley/stall.html similarity index 95% rename from lnbits/extensions/diagonalley/templates/diagonalley/stall.html rename to lnbits/extensions/shop/templates/diagonalley/stall.html index e758a7bb..df312175 100644 --- a/lnbits/extensions/diagonalley/templates/diagonalley/stall.html +++ b/lnbits/extensions/shop/templates/diagonalley/stall.html @@ -76,7 +76,7 @@ {% raw %} { this.checkoutDialog = {show: false, data: {}} @@ -402,7 +402,7 @@ LNbits.api .request( 'GET', - `/diagonalley/api/v1/orders/payments/${this.qrCodeDialog.data.payment_hash}` + `/shop/api/v1/orders/payments/${this.qrCodeDialog.data.payment_hash}` ) .then(res => { if (res.data.paid) { @@ -416,7 +416,7 @@ { label: 'See Order', handler: () => { - window.location.href = `/diagonalley/order/?merch=${this.stall.id}&invoice_id=${this.qrCodeDialog.data.payment_hash}` + window.location.href = `/shop/order/?merch=${this.stall.id}&invoice_id=${this.qrCodeDialog.data.payment_hash}` } } ] @@ -425,7 +425,7 @@ this.resetCart() this.closeQrCodeDialog() setTimeout(() => { - window.location.href = `/diagonalley/order/?merch=${this.stall.id}&invoice_id=${this.qrCodeDialog.data.payment_hash}` + window.location.href = `/shop/order/?merch=${this.stall.id}&invoice_id=${this.qrCodeDialog.data.payment_hash}` }, 5000) } }) diff --git a/lnbits/extensions/diagonalley/views.py b/lnbits/extensions/shop/views.py similarity index 70% rename from lnbits/extensions/diagonalley/views.py rename to lnbits/extensions/shop/views.py index b87d1918..bb36d683 100644 --- a/lnbits/extensions/diagonalley/views.py +++ b/lnbits/extensions/shop/views.py @@ -11,40 +11,40 @@ from starlette.responses import HTMLResponse from lnbits.core.models import User from lnbits.decorators import check_user_exists # type: ignore -from lnbits.extensions.diagonalley import diagonalley_ext, diagonalley_renderer -from lnbits.extensions.diagonalley.models import CreateChatMessage -from lnbits.extensions.diagonalley.notifier import Notifier +from lnbits.extensions.shop import shop_ext, shop_renderer +from lnbits.extensions.shop.models import CreateChatMessage +from lnbits.extensions.shop.notifier import Notifier from .crud import ( create_chat_message, - get_diagonalley_market, - get_diagonalley_market_stalls, - get_diagonalley_order_details, - get_diagonalley_order_invoiceid, - get_diagonalley_products, - get_diagonalley_stall, - get_diagonalley_zone, - get_diagonalley_zones, - update_diagonalley_product_stock, + get_shop_market, + get_shop_market_stalls, + get_shop_order_details, + get_shop_order_invoiceid, + get_shop_products, + get_shop_stall, + get_shop_zone, + get_shop_zones, + update_shop_product_stock, ) templates = Jinja2Templates(directory="templates") -@diagonalley_ext.get("/", response_class=HTMLResponse) +@shop_ext.get("/", response_class=HTMLResponse) async def index(request: Request, user: User = Depends(check_user_exists)): - return diagonalley_renderer().TemplateResponse( - "diagonalley/index.html", {"request": request, "user": user.dict()} + return shop_renderer().TemplateResponse( + "shop/index.html", {"request": request, "user": user.dict()} ) -@diagonalley_ext.get("/stalls/{stall_id}", response_class=HTMLResponse) +@shop_ext.get("/stalls/{stall_id}", response_class=HTMLResponse) async def display(request: Request, stall_id): - stall = await get_diagonalley_stall(stall_id) - products = await get_diagonalley_products(stall_id) + stall = await get_shop_stall(stall_id) + products = await get_shop_products(stall_id) zones = [] for id in stall.shippingzones.split(","): - z = await get_diagonalley_zone(id) + z = await get_shop_zone(id) z = z.dict() zones.append({"label": z["countries"], "cost": z["cost"], "value": z["id"]}) @@ -57,8 +57,8 @@ async def display(request: Request, stall_id): del stall["privatekey"] stall["zones"] = zones - return diagonalley_renderer().TemplateResponse( - "diagonalley/stall.html", + return shop_renderer().TemplateResponse( + "shop/stall.html", { "request": request, "stall": stall, @@ -67,23 +67,23 @@ async def display(request: Request, stall_id): ) -@diagonalley_ext.get("/market/{market_id}", response_class=HTMLResponse) +@shop_ext.get("/market/{market_id}", response_class=HTMLResponse) async def display(request: Request, market_id): - market = await get_diagonalley_market(market_id) + market = await get_shop_market(market_id) if not market: raise HTTPException( status_code=HTTPStatus.NOT_FOUND, detail="Marketplace doesn't exist." ) - stalls = await get_diagonalley_market_stalls(market_id) + stalls = await get_shop_market_stalls(market_id) stalls_ids = [stall.id for stall in stalls] products = [ - product.dict() for product in await get_diagonalley_products(stalls_ids) + product.dict() for product in await get_shop_products(stalls_ids) ] - return diagonalley_renderer().TemplateResponse( - "diagonalley/market.html", + return shop_renderer().TemplateResponse( + "shop/market.html", { "request": request, "market": market, @@ -93,20 +93,20 @@ async def display(request: Request, market_id): ) -@diagonalley_ext.get("/order", response_class=HTMLResponse) +@shop_ext.get("/order", response_class=HTMLResponse) async def chat_page( request: Request, merch: str = Query(...), invoice_id: str = Query(...), keys: str = Query(None), ): - stall = await get_diagonalley_stall(merch) - order = await get_diagonalley_order_invoiceid(invoice_id) - _order = await get_diagonalley_order_details(order.id) - products = await get_diagonalley_products(stall.id) + stall = await get_shop_stall(merch) + order = await get_shop_order_invoiceid(invoice_id) + _order = await get_shop_order_details(order.id) + products = await get_shop_products(stall.id) - return diagonalley_renderer().TemplateResponse( - "diagonalley/order.html", + return shop_renderer().TemplateResponse( + "shop/order.html", { "request": request, "stall": { @@ -155,7 +155,7 @@ notifier = Notifier() # manager = ConnectionManager() -# @diagonalley_ext.websocket("/ws/{room_name}") +# @shop_ext.websocket("/ws/{room_name}") # async def websocket_endpoint(websocket: WebSocket, room_name: str): # await manager.connect(websocket, room_name) # try: @@ -165,7 +165,7 @@ notifier = Notifier() # manager.disconnect(websocket) -@diagonalley_ext.websocket("/ws/{room_name}") +@shop_ext.websocket("/ws/{room_name}") async def websocket_endpoint( websocket: WebSocket, room_name: str, background_tasks: BackgroundTasks ): diff --git a/lnbits/extensions/diagonalley/views_api.py b/lnbits/extensions/shop/views_api.py similarity index 52% rename from lnbits/extensions/diagonalley/views_api.py rename to lnbits/extensions/shop/views_api.py index b4208847..2899d2a0 100644 --- a/lnbits/extensions/diagonalley/views_api.py +++ b/lnbits/extensions/shop/views_api.py @@ -21,41 +21,41 @@ from lnbits.decorators import ( ) from ...helpers import urlsafe_short_hash -from . import db, diagonalley_ext +from . import db, shop_ext from .crud import ( - create_diagonalley_market, - create_diagonalley_market_stalls, - create_diagonalley_order, - create_diagonalley_order_details, - create_diagonalley_product, - create_diagonalley_stall, - create_diagonalley_zone, - delete_diagonalley_order, - delete_diagonalley_product, - delete_diagonalley_stall, - delete_diagonalley_zone, - get_diagonalley_chat_by_merchant, - get_diagonalley_chat_messages, - get_diagonalley_latest_chat_messages, - get_diagonalley_market, - get_diagonalley_market_stalls, - get_diagonalley_markets, - get_diagonalley_order, - get_diagonalley_order_details, - get_diagonalley_order_invoiceid, - get_diagonalley_orders, - get_diagonalley_product, - get_diagonalley_products, - get_diagonalley_stall, - get_diagonalley_stalls, - get_diagonalley_stalls_by_ids, - get_diagonalley_zone, - get_diagonalley_zones, - set_diagonalley_order_pubkey, - update_diagonalley_market, - update_diagonalley_product, - update_diagonalley_stall, - update_diagonalley_zone, + create_shop_market, + create_shop_market_stalls, + create_shop_order, + create_shop_order_details, + create_shop_product, + create_shop_stall, + create_shop_zone, + delete_shop_order, + delete_shop_product, + delete_shop_stall, + delete_shop_zone, + get_shop_chat_by_merchant, + get_shop_chat_messages, + get_shop_latest_chat_messages, + get_shop_market, + get_shop_market_stalls, + get_shop_markets, + get_shop_order, + get_shop_order_details, + get_shop_order_invoiceid, + get_shop_orders, + get_shop_product, + get_shop_products, + get_shop_stall, + get_shop_stalls, + get_shop_stalls_by_ids, + get_shop_zone, + get_shop_zones, + set_shop_order_pubkey, + update_shop_market, + update_shop_product, + update_shop_stall, + update_shop_zone, ) from .models import ( CreateMarket, @@ -73,8 +73,8 @@ from .models import ( ### Products -@diagonalley_ext.get("/api/v1/products") -async def api_diagonalley_products( +@shop_ext.get("/api/v1/products") +async def api_shop_products( wallet: WalletTypeInfo = Depends(get_key_type), all_stalls: bool = Query(False), ): @@ -83,90 +83,90 @@ async def api_diagonalley_products( if all_stalls: wallet_ids = (await get_user(wallet.wallet.user)).wallet_ids - stalls = [stall.id for stall in await get_diagonalley_stalls(wallet_ids)] + stalls = [stall.id for stall in await get_shop_stalls(wallet_ids)] if not stalls: return - return [product.dict() for product in await get_diagonalley_products(stalls)] + return [product.dict() for product in await get_shop_products(stalls)] -@diagonalley_ext.post("/api/v1/products") -@diagonalley_ext.put("/api/v1/products/{product_id}") -async def api_diagonalley_product_create( +@shop_ext.post("/api/v1/products") +@shop_ext.put("/api/v1/products/{product_id}") +async def api_shop_product_create( data: createProduct, product_id=None, wallet: WalletTypeInfo = Depends(get_key_type) ): if product_id: - product = await get_diagonalley_product(product_id) + product = await get_shop_product(product_id) if not product: return {"message": "Withdraw product does not exist."} - stall = await get_diagonalley_stall(stall_id=product.stall) + stall = await get_shop_stall(stall_id=product.stall) if stall.wallet != wallet.wallet.id: return {"message": "Not your withdraw product."} - product = await update_diagonalley_product(product_id, **data.dict()) + product = await update_shop_product(product_id, **data.dict()) else: - product = await create_diagonalley_product(data=data) + product = await create_shop_product(data=data) return product.dict() -@diagonalley_ext.delete("/api/v1/products/{product_id}") -async def api_diagonalley_products_delete( +@shop_ext.delete("/api/v1/products/{product_id}") +async def api_shop_products_delete( product_id, wallet: WalletTypeInfo = Depends(require_admin_key) ): - product = await get_diagonalley_product(product_id) + product = await get_shop_product(product_id) if not product: return {"message": "Product does not exist."} - stall = await get_diagonalley_stall(product.stall) + stall = await get_shop_stall(product.stall) if stall.wallet != wallet.wallet.id: - return {"message": "Not your Diagon Alley."} + return {"message": "Not your Shop."} - await delete_diagonalley_product(product_id) + await delete_shop_product(product_id) raise HTTPException(status_code=HTTPStatus.NO_CONTENT) # # # Shippingzones -@diagonalley_ext.get("/api/v1/zones") -async def api_diagonalley_zones(wallet: WalletTypeInfo = Depends(get_key_type)): +@shop_ext.get("/api/v1/zones") +async def api_shop_zones(wallet: WalletTypeInfo = Depends(get_key_type)): - return await get_diagonalley_zones(wallet.wallet.user) + return await get_shop_zones(wallet.wallet.user) -@diagonalley_ext.post("/api/v1/zones") -async def api_diagonalley_zone_create( +@shop_ext.post("/api/v1/zones") +async def api_shop_zone_create( data: createZones, wallet: WalletTypeInfo = Depends(get_key_type) ): - zone = await create_diagonalley_zone(user=wallet.wallet.user, data=data) + zone = await create_shop_zone(user=wallet.wallet.user, data=data) return zone.dict() -@diagonalley_ext.post("/api/v1/zones/{zone_id}") -async def api_diagonalley_zone_update( +@shop_ext.post("/api/v1/zones/{zone_id}") +async def api_shop_zone_update( data: createZones, zone_id: str, wallet: WalletTypeInfo = Depends(require_admin_key), ): - zone = await get_diagonalley_zone(zone_id) + zone = await get_shop_zone(zone_id) if not zone: return {"message": "Zone does not exist."} if zone.user != wallet.wallet.user: return {"message": "Not your record."} - zone = await update_diagonalley_zone(zone_id, **data.dict()) + zone = await update_shop_zone(zone_id, **data.dict()) return zone -@diagonalley_ext.delete("/api/v1/zones/{zone_id}") -async def api_diagonalley_zone_delete( +@shop_ext.delete("/api/v1/zones/{zone_id}") +async def api_shop_zone_delete( zone_id, wallet: WalletTypeInfo = Depends(require_admin_key) ): - zone = await get_diagonalley_zone(zone_id) + zone = await get_shop_zone(zone_id) if not zone: return {"message": "zone does not exist."} @@ -174,15 +174,15 @@ async def api_diagonalley_zone_delete( if zone.user != wallet.wallet.user: return {"message": "Not your zone."} - await delete_diagonalley_zone(zone_id) + await delete_shop_zone(zone_id) raise HTTPException(status_code=HTTPStatus.NO_CONTENT) # # # Stalls -@diagonalley_ext.get("/api/v1/stalls") -async def api_diagonalley_stalls( +@shop_ext.get("/api/v1/stalls") +async def api_shop_stalls( wallet: WalletTypeInfo = Depends(get_key_type), all_wallets: bool = Query(False) ): wallet_ids = [wallet.wallet.id] @@ -190,37 +190,37 @@ async def api_diagonalley_stalls( if all_wallets: wallet_ids = (await get_user(wallet.wallet.user)).wallet_ids - return [stall.dict() for stall in await get_diagonalley_stalls(wallet_ids)] + return [stall.dict() for stall in await get_shop_stalls(wallet_ids)] -@diagonalley_ext.post("/api/v1/stalls") -@diagonalley_ext.put("/api/v1/stalls/{stall_id}") -async def api_diagonalley_stall_create( +@shop_ext.post("/api/v1/stalls") +@shop_ext.put("/api/v1/stalls/{stall_id}") +async def api_shop_stall_create( data: createStalls, stall_id: str = None, wallet: WalletTypeInfo = Depends(require_invoice_key), ): if stall_id: - stall = await get_diagonalley_stall(stall_id) + stall = await get_shop_stall(stall_id) if not stall: return {"message": "Withdraw stall does not exist."} if stall.wallet != wallet.wallet.id: return {"message": "Not your withdraw stall."} - stall = await update_diagonalley_stall(stall_id, **data.dict()) + stall = await update_shop_stall(stall_id, **data.dict()) else: - stall = await create_diagonalley_stall(data=data) + stall = await create_shop_stall(data=data) return stall.dict() -@diagonalley_ext.delete("/api/v1/stalls/{stall_id}") -async def api_diagonalley_stall_delete( +@shop_ext.delete("/api/v1/stalls/{stall_id}") +async def api_shop_stall_delete( stall_id: str, wallet: WalletTypeInfo = Depends(require_admin_key) ): - stall = await get_diagonalley_stall(stall_id) + stall = await get_shop_stall(stall_id) if not stall: return {"message": "Stall does not exist."} @@ -228,44 +228,44 @@ async def api_diagonalley_stall_delete( if stall.wallet != wallet.wallet.id: return {"message": "Not your Stall."} - await delete_diagonalley_stall(stall_id) + await delete_shop_stall(stall_id) raise HTTPException(status_code=HTTPStatus.NO_CONTENT) ###Orders -@diagonalley_ext.get("/api/v1/orders") -async def api_diagonalley_orders( +@shop_ext.get("/api/v1/orders") +async def api_shop_orders( wallet: WalletTypeInfo = Depends(get_key_type), all_wallets: bool = Query(False) ): wallet_ids = [wallet.wallet.id] if all_wallets: wallet_ids = (await get_user(wallet.wallet.user)).wallet_ids - orders = await get_diagonalley_orders(wallet_ids) + orders = await get_shop_orders(wallet_ids) orders_with_details = [] for order in orders: order = order.dict() - order["details"] = await get_diagonalley_order_details(order["id"]) + order["details"] = await get_shop_order_details(order["id"]) orders_with_details.append(order) try: return orders_with_details # [order for order in orders] - # return [order.dict() for order in await get_diagonalley_orders(wallet_ids)] + # return [order.dict() for order in await get_shop_orders(wallet_ids)] except: return {"message": "We could not retrieve the orders."} -@diagonalley_ext.get("/api/v1/orders/{order_id}") -async def api_diagonalley_order_by_id(order_id: str): - order = (await get_diagonalley_order(order_id)).dict() - order["details"] = await get_diagonalley_order_details(order_id) +@shop_ext.get("/api/v1/orders/{order_id}") +async def api_shop_order_by_id(order_id: str): + order = (await get_shop_order(order_id)).dict() + order["details"] = await get_shop_order_details(order_id) return order -@diagonalley_ext.post("/api/v1/orders") -async def api_diagonalley_order_create(data: createOrder): +@shop_ext.post("/api/v1/orders") +async def api_shop_order_create(data: createOrder): ref = urlsafe_short_hash() payment_hash, payment_request = await create_invoice( @@ -273,14 +273,14 @@ async def api_diagonalley_order_create(data: createOrder): amount=data.total, memo=f"New order on Diagon alley", extra={ - "tag": "diagonalley", + "tag": "shop", "reference": ref, }, ) - order_id = await create_diagonalley_order(invoiceid=payment_hash, data=data) + order_id = await create_shop_order(invoiceid=payment_hash, data=data) logger.debug(f"ORDER ID {order_id}") logger.debug(f"PRODUCTS {data.products}") - await create_diagonalley_order_details(order_id=order_id, data=data.products) + await create_shop_order_details(order_id=order_id, data=data.products) return { "payment_hash": payment_hash, "payment_request": payment_request, @@ -288,9 +288,9 @@ async def api_diagonalley_order_create(data: createOrder): } -@diagonalley_ext.get("/api/v1/orders/payments/{payment_hash}") -async def api_diagonalley_check_payment(payment_hash: str): - order = await get_diagonalley_order_invoiceid(payment_hash) +@shop_ext.get("/api/v1/orders/payments/{payment_hash}") +async def api_shop_check_payment(payment_hash: str): + order = await get_shop_order_invoiceid(payment_hash) if not order: raise HTTPException( status_code=HTTPStatus.NOT_FOUND, detail="Order does not exist." @@ -304,11 +304,11 @@ async def api_diagonalley_check_payment(payment_hash: str): return status -@diagonalley_ext.delete("/api/v1/orders/{order_id}") -async def api_diagonalley_order_delete( +@shop_ext.delete("/api/v1/orders/{order_id}") +async def api_shop_order_delete( order_id: str, wallet: WalletTypeInfo = Depends(require_admin_key) ): - order = await get_diagonalley_order(order_id) + order = await get_shop_order(order_id) if not order: return {"message": "Order does not exist."} @@ -316,17 +316,17 @@ async def api_diagonalley_order_delete( if order.wallet != wallet.wallet.id: return {"message": "Not your Order."} - await delete_diagonalley_order(order_id) + await delete_shop_order(order_id) raise HTTPException(status_code=HTTPStatus.NO_CONTENT) -@diagonalley_ext.get("/api/v1/orders/paid/{order_id}") -async def api_diagonalley_order_paid( +@shop_ext.get("/api/v1/orders/paid/{order_id}") +async def api_shop_order_paid( order_id, wallet: WalletTypeInfo = Depends(require_admin_key) ): await db.execute( - "UPDATE diagonalley.orders SET paid = ? WHERE id = ?", + "UPDATE shop.orders SET paid = ? WHERE id = ?", ( True, order_id, @@ -335,19 +335,19 @@ async def api_diagonalley_order_paid( return "", HTTPStatus.OK -@diagonalley_ext.get("/api/v1/orders/shipped/{order_id}") -async def api_diagonalley_order_shipped( +@shop_ext.get("/api/v1/orders/shipped/{order_id}") +async def api_shop_order_shipped( order_id, wallet: WalletTypeInfo = Depends(get_key_type) ): await db.execute( - "UPDATE diagonalley.orders SET shipped = ? WHERE id = ?", + "UPDATE shop.orders SET shipped = ? WHERE id = ?", ( True, order_id, ), ) order = await db.fetchone( - "SELECT * FROM diagonalley.orders WHERE id = ?", (order_id,) + "SELECT * FROM shop.orders WHERE id = ?", (order_id,) ) return order @@ -356,35 +356,35 @@ async def api_diagonalley_order_shipped( ###List products based on stall id -@diagonalley_ext.get("/api/v1/stall/products/{stall_id}") -async def api_diagonalley_stall_products( +@shop_ext.get("/api/v1/stall/products/{stall_id}") +async def api_shop_stall_products( stall_id, wallet: WalletTypeInfo = Depends(get_key_type) ): rows = await db.fetchone( - "SELECT * FROM diagonalley.stalls WHERE id = ?", (stall_id,) + "SELECT * FROM shop.stalls WHERE id = ?", (stall_id,) ) if not rows: return {"message": "Stall does not exist."} products = db.fetchone( - "SELECT * FROM diagonalley.products WHERE wallet = ?", (rows[1],) + "SELECT * FROM shop.products WHERE wallet = ?", (rows[1],) ) if not products: return {"message": "No products"} - return [products.dict() for products in await get_diagonalley_products(rows[1])] + return [products.dict() for products in await get_shop_products(rows[1])] ###Check a product has been shipped -@diagonalley_ext.get("/api/v1/stall/checkshipped/{checking_id}") -async def api_diagonalley_stall_checkshipped( +@shop_ext.get("/api/v1/stall/checkshipped/{checking_id}") +async def api_shop_stall_checkshipped( checking_id, wallet: WalletTypeInfo = Depends(get_key_type) ): rows = await db.fetchone( - "SELECT * FROM diagonalley.orders WHERE invoiceid = ?", (checking_id,) + "SELECT * FROM shop.orders WHERE invoiceid = ?", (checking_id,) ) return {"shipped": rows["shipped"]} @@ -392,12 +392,12 @@ async def api_diagonalley_stall_checkshipped( ###Place order -# @diagonalley_ext.post("/api/v1/stall/order/{stall_id}") -# async def api_diagonalley_stall_order( +# @shop_ext.post("/api/v1/stall/order/{stall_id}") +# async def api_shop_stall_order( # stall_id, data: createOrder, wallet: WalletTypeInfo = Depends(get_key_type) # ): -# product = await get_diagonalley_product(data.productid) -# shipping = await get_diagonalley_stall(stall_id) +# product = await get_shop_product(data.productid) +# shipping = await get_shop_stall(stall_id) # if data.shippingzone == 1: # shippingcost = shipping.zone1cost # missing in model @@ -412,7 +412,7 @@ async def api_diagonalley_stall_checkshipped( # selling_id = urlsafe_b64encode(uuid4().bytes_le).decode("utf-8") # await db.execute( # """ -# INSERT INTO diagonalley.orders (id, productid, wallet, product, quantity, shippingzone, address, email, invoiceid, paid, shipped) +# INSERT INTO shop.orders (id, productid, wallet, product, quantity, shippingzone, address, email, invoiceid, paid, shipped) # VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) # """, # ( @@ -437,43 +437,43 @@ async def api_diagonalley_stall_checkshipped( ## -@diagonalley_ext.get("/api/v1/markets") -async def api_diagonalley_markets(wallet: WalletTypeInfo = Depends(get_key_type)): - # await get_diagonalley_market_stalls(market_id="FzpWnMyHQMcRppiGVua4eY") +@shop_ext.get("/api/v1/markets") +async def api_shop_markets(wallet: WalletTypeInfo = Depends(get_key_type)): + # await get_shop_market_stalls(market_id="FzpWnMyHQMcRppiGVua4eY") try: return [ market.dict() - for market in await get_diagonalley_markets(wallet.wallet.user) + for market in await get_shop_markets(wallet.wallet.user) ] except: return {"message": "We could not retrieve the markets."} -@diagonalley_ext.get("/api/v1/markets/{market_id}/stalls") -async def api_diagonalley_market_stalls(market_id: str): - stall_ids = await get_diagonalley_market_stalls(market_id) +@shop_ext.get("/api/v1/markets/{market_id}/stalls") +async def api_shop_market_stalls(market_id: str): + stall_ids = await get_shop_market_stalls(market_id) return stall_ids -@diagonalley_ext.post("/api/v1/markets") -@diagonalley_ext.put("/api/v1/markets/{market_id}") -async def api_diagonalley_stall_create( +@shop_ext.post("/api/v1/markets") +@shop_ext.put("/api/v1/markets/{market_id}") +async def api_shop_stall_create( data: CreateMarket, market_id: str = None, wallet: WalletTypeInfo = Depends(require_invoice_key), ): if market_id: - market = await get_diagonalley_market(market_id) + market = await get_shop_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()) + market = await update_shop_market(market_id, **data.dict()) else: - market = await create_diagonalley_market(data=data) - await create_diagonalley_market_stalls(market_id=market.id, data=data.stalls) + market = await create_shop_market(data=data) + await create_shop_market_stalls(market_id=market.id, data=data.stalls) return market.dict() @@ -481,8 +481,8 @@ async def api_diagonalley_stall_create( ## KEYS -@diagonalley_ext.get("/api/v1/keys") -async def api_diagonalley_generate_keys(): +@shop_ext.get("/api/v1/keys") +async def api_shop_generate_keys(): private_key = PrivateKey() public_key = private_key.pubkey.serialize().hex() while not public_key.startswith("02"): @@ -494,21 +494,21 @@ async def api_diagonalley_generate_keys(): ## MESSAGES/CHAT -@diagonalley_ext.get("/api/v1/chat/messages/merchant") +@shop_ext.get("/api/v1/chat/messages/merchant") async def api_get_merchant_messages( orders: str = Query(...), wallet: WalletTypeInfo = Depends(require_admin_key) ): return [ - msg.dict() for msg in await get_diagonalley_chat_by_merchant(orders.split(",")) + msg.dict() for msg in await get_shop_chat_by_merchant(orders.split(",")) ] -@diagonalley_ext.get("/api/v1/chat/messages/{room_name}") +@shop_ext.get("/api/v1/chat/messages/{room_name}") async def api_get_latest_chat_msg(room_name: str, all_messages: bool = Query(False)): if all_messages: - messages = await get_diagonalley_chat_messages(room_name) + messages = await get_shop_chat_messages(room_name) else: - messages = await get_diagonalley_latest_chat_messages(room_name) + messages = await get_shop_latest_chat_messages(room_name) return messages