pagination fix

This commit is contained in:
C committed 2026-01-04 11:44:30 -08:00
1 parent 6c0d15dec9
commit 424d7795bc
1 file changed
+55 -31
+55 -31
View File
@@ -125,42 +125,66 @@ async def get_item_by_variation_id(variation_id: str) -> dict:
# Search LEGO category items to find which one has this variation # Search LEGO category items to find which one has this variation
print(f"[@DEBUG] Searching for variation {variation_id} in LEGO category") print(f"[@DEBUG] Searching for variation {variation_id} in LEGO category")
result = await client.catalog.search( cursor = None
object_types=["ITEM"], page_count = 0
query={
"exact_query": {
"attribute_name": "category_id",
"attribute_value": LEGO_CAT_ID,
}
},
limit=1000,
)
result_json = json.loads(result.model_dump_json())
if not result_json.get("objects"): while True:
raise ValueError(f"No items found in LEGO category") page_count += 1
print(f"[@DEBUG] Searching page {page_count}...")
# Search through items to find which has this variation search_params = {
for obj in result_json["objects"]: "object_types": ["ITEM"],
item_data = obj.get("item_data", {}) "query": {
variations = item_data.get("variations", []) "exact_query": {
"attribute_name": "category_id",
for variation in variations: "attribute_value": LEGO_CAT_ID,
if variation.get("id") == variation_id:
# Found the parent item!
print(f"[@DEBUG] Found parent item: {obj['id']}")
return {
"id": obj["id"],
"name": item_data.get("name", ""),
"description": item_data.get("description", ""),
"category_id": item_data.get("category_id"),
"variations": variations,
"updated_at": obj.get("updated_at"),
"version": obj.get("version"),
} }
},
"limit": 1000,
}
if cursor:
search_params["cursor"] = cursor
result = await client.catalog.search(**search_params)
result_json = json.loads(result.model_dump_json())
if not result_json.get("objects"):
if page_count == 1:
raise ValueError(f"No items found in LEGO category")
else:
# No more results
break
# Search through items on this page to find which has this variation
for obj in result_json["objects"]:
item_data = obj.get("item_data", {})
variations = item_data.get("variations", [])
for variation in variations:
if variation.get("id") == variation_id:
# Found the parent item!
print(
f"[@DEBUG] Found parent item: {obj['id']} on page {page_count}"
)
return {
"id": obj["id"],
"name": item_data.get("name", ""),
"description": item_data.get("description", ""),
"category_id": item_data.get("category_id"),
"variations": variations,
"updated_at": obj.get("updated_at"),
"version": obj.get("version"),
}
# Check if there are more pages
cursor = result_json.get("cursor")
if not cursor:
# No more pages
break
raise ValueError( raise ValueError(
f"Variation {variation_id} not found in any LEGO category item" f"Variation {variation_id} not found in any LEGO category item (searched {page_count} pages)"
) )
except Exception as e: except Exception as e: