diff --git a/apps/marketplace-service-debug/src/marketplace_service/main.py b/apps/marketplace-service-debug/src/marketplace_service/main.py index 03a050dc..8be960f4 100644 --- a/apps/marketplace-service-debug/src/marketplace_service/main.py +++ b/apps/marketplace-service-debug/src/marketplace_service/main.py @@ -205,6 +205,23 @@ async def create_bid( raise +@app.get("/v1/marketplace/orders") +async def get_orders( + wallet: str | None = None, + svc: MarketplaceService = Depends(get_marketplace_service), +): + """Get marketplace orders (alias for bids for CLI compatibility)""" + try: + logger.info(f"GET /v1/marketplace/orders called with wallet={wallet}") + # Use list_bids with provider filter as orders are stored as bids + result = await svc.list_bids(provider=wallet) + # Return in format expected by CLI + return {"orders": result} + except Exception as e: + logger.error(f"Error in GET /v1/marketplace/orders: {type(e).__name__}: {str(e)}") + raise + + @app.get("/v1/marketplace/analytics") async def get_analytics( period_type: str = "daily", diff --git a/apps/marketplace-service-debug/src/marketplace_service/services/marketplace_service.py b/apps/marketplace-service-debug/src/marketplace_service/services/marketplace_service.py index 12e9f750..98daf7d4 100644 --- a/apps/marketplace-service-debug/src/marketplace_service/services/marketplace_service.py +++ b/apps/marketplace-service-debug/src/marketplace_service/services/marketplace_service.py @@ -128,7 +128,7 @@ class MarketplaceService: self, status: str | None = None, provider: str | None = None, - ) -> list[MarketplaceBid]: + ) -> list[dict]: """List marketplace bids""" try: logger.info(f"list_bids called with filters: status={status}, provider={provider}") @@ -140,7 +140,22 @@ class MarketplaceService: logger.info("Executing database query for bids") result = list((await self.session.execute(stmt)).all()) logger.info(f"Retrieved {len(result)} bids") - return result + # Convert SQLAlchemy model objects to dictionaries for JSON serialization + bids_list = [] + for row in result: + bid = row[0] if row else None + if bid: + bids_list.append({ + 'id': bid.id, + 'provider': bid.provider, + 'capacity': bid.capacity, + 'price': bid.price, + 'notes': bid.notes, + 'status': bid.status, + 'submitted_at': bid.submitted_at.isoformat() if bid.submitted_at else None, + }) + logger.info(f"Converted {len(bids_list)} bids to dictionaries") + return bids_list except Exception as e: logger.error(f"Error in list_bids: {type(e).__name__}: {str(e)}") raise diff --git a/apps/marketplace-service/src/marketplace_service/main.py b/apps/marketplace-service/src/marketplace_service/main.py index 844eaab7..2c9aec73 100644 --- a/apps/marketplace-service/src/marketplace_service/main.py +++ b/apps/marketplace-service/src/marketplace_service/main.py @@ -205,6 +205,23 @@ async def create_bid( raise +@app.get("/v1/marketplace/orders") +async def get_orders( + wallet: str | None = None, + svc: MarketplaceService = Depends(get_marketplace_service), +): + """Get marketplace orders (alias for bids for CLI compatibility)""" + try: + logger.info(f"GET /v1/marketplace/orders called with wallet={wallet}") + # Use list_bids with provider filter as orders are stored as bids + result = await svc.list_bids(provider=wallet) + # Return in format expected by CLI + return {"orders": result} + except Exception as e: + logger.error(f"Error in GET /v1/marketplace/orders: {type(e).__name__}: {str(e)}") + raise + + @app.get("/v1/marketplace/analytics") async def get_analytics( period_type: str = "daily", diff --git a/apps/marketplace-service/src/marketplace_service/services/marketplace_service.py b/apps/marketplace-service/src/marketplace_service/services/marketplace_service.py index 12e9f750..98daf7d4 100644 --- a/apps/marketplace-service/src/marketplace_service/services/marketplace_service.py +++ b/apps/marketplace-service/src/marketplace_service/services/marketplace_service.py @@ -128,7 +128,7 @@ class MarketplaceService: self, status: str | None = None, provider: str | None = None, - ) -> list[MarketplaceBid]: + ) -> list[dict]: """List marketplace bids""" try: logger.info(f"list_bids called with filters: status={status}, provider={provider}") @@ -140,7 +140,22 @@ class MarketplaceService: logger.info("Executing database query for bids") result = list((await self.session.execute(stmt)).all()) logger.info(f"Retrieved {len(result)} bids") - return result + # Convert SQLAlchemy model objects to dictionaries for JSON serialization + bids_list = [] + for row in result: + bid = row[0] if row else None + if bid: + bids_list.append({ + 'id': bid.id, + 'provider': bid.provider, + 'capacity': bid.capacity, + 'price': bid.price, + 'notes': bid.notes, + 'status': bid.status, + 'submitted_at': bid.submitted_at.isoformat() if bid.submitted_at else None, + }) + logger.info(f"Converted {len(bids_list)} bids to dictionaries") + return bids_list except Exception as e: logger.error(f"Error in list_bids: {type(e).__name__}: {str(e)}") raise