diff --git a/app/modules/webshop/backend/router.py b/app/modules/webshop/backend/router.py index 8da946b..12a1184 100644 --- a/app/modules/webshop/backend/router.py +++ b/app/modules/webshop/backend/router.py @@ -343,6 +343,40 @@ async def delete_webshop_config(config_id: int): raise HTTPException(status_code=500, detail=str(e)) +# ========================================================================== +# PRODUCT SEARCH HELPERS +# ========================================================================== + + +@router.get("/webshop/products/search") +async def search_webshop_products( + search: Optional[str] = None, + limit: int = 20, + config_id: Optional[int] = None +): + try: + params: List = [] + filters = "WHERE visible = TRUE" + + if config_id is not None: + filters += " AND webshop_config_id = %s" + params.append(config_id) + + if search: + pattern = f"%{search}%" + filters += " AND (name ILIKE %s OR product_number ILIKE %s OR category ILIKE %s)" + params.extend([pattern, pattern, pattern]) + + query = f"SELECT * FROM webshop_products {filters} ORDER BY updated_at DESC LIMIT %s" + params.append(limit) + + return {"products": execute_query(query, tuple(params)) or []} + + except Exception as e: + logger.error(f"❌ Error searching webshop products: {e}") + raise HTTPException(status_code=500, detail=str(e)) + + # ============================================================================ # WEBSHOP PRODUCT ENDPOINTS # ============================================================================ diff --git a/app/modules/webshop/frontend/index.html b/app/modules/webshop/frontend/index.html index 78e9c9e..d4a9f89 100644 --- a/app/modules/webshop/frontend/index.html +++ b/app/modules/webshop/frontend/index.html @@ -68,6 +68,16 @@