added enums for status constants/fixed status not updating

This commit is contained in:
tpv committed 2026-07-06 12:18:57 -07:00
1 parent b0319f6ada
commit 6b3bd33739
2 files changed
+14 -9

No files matched your search

+10 -4
View File
@@ -6,6 +6,7 @@ and the expected error tuple used for known-failure handling.
""" """
import asyncio import asyncio
from enum import Enum
from json import JSONDecodeError from json import JSONDecodeError
import aiohttp import aiohttp
@@ -58,10 +59,6 @@ BUCKET_WEBHOOK_MAP = {
90: "90-100", 90: "90-100",
"price_drop": "40-49", "price_drop": "40-49",
} }
STATUS_PENDING = "pending"
STATUS_SENT = "sent"
STATUS_SKIPPED = "skipped"
STATUS_FAILED = "failed"
EXPECTED_TASK_ERRORS = ( EXPECTED_TASK_ERRORS = (
RequestsError, RequestsError,
@@ -72,3 +69,12 @@ EXPECTED_TASK_ERRORS = (
PyMongoError, PyMongoError,
JSONDecodeError, JSONDecodeError,
) )
class ProductStatus(str, Enum):
"""Lifecycle status for a monitored product document."""
PENDING = "pending"
SENT = "sent"
SKIPPED = "skipped"
FAILED = "failed"
+4 -5
View File
@@ -14,7 +14,7 @@ from motor.motor_asyncio import AsyncIOMotorClient, AsyncIOMotorCollection
from pymongo import UpdateOne from pymongo import UpdateOne
from pymongo.errors import PyMongoError from pymongo.errors import PyMongoError
from monitor_utils.constants import MONGO_DATABASE_NAME, MONGO_URL, STATUS_PENDING from monitor_utils.constants import ProductStatus, MONGO_DATABASE_NAME, MONGO_URL
from monitor_utils.models import Product from monitor_utils.models import Product
LOGGER = logging.getLogger(__name__) LOGGER = logging.getLogger(__name__)
@@ -106,10 +106,10 @@ async def add_products_to_database(
set_on_insert = {"discoveredDate": now} set_on_insert = {"discoveredDate": now}
if price_dropped: if price_dropped:
document["status"] = STATUS_PENDING document["status"] = ProductStatus.PENDING
document["priceBeforeDrop"] = old_price document["priceBeforeDrop"] = old_price
else: else:
set_on_insert["status"] = STATUS_PENDING set_on_insert["status"] = ProductStatus.PENDING
update = {"$set": document, "$setOnInsert": set_on_insert} update = {"$set": document, "$setOnInsert": set_on_insert}
if new_price is not None and new_price != old_price: if new_price is not None and new_price != old_price:
@@ -143,7 +143,7 @@ def build_doc_id(
return f"{product_id}_{category_identifier}" if use_composite else product_id return f"{product_id}_{category_identifier}" if use_composite else product_id
def convert_product_to_mongo(product: Product, category_identifier: str) -> dict: def convert_product_to_mongo(product: Product) -> dict:
"""Flatten a Product into its MongoDB document representation. """Flatten a Product into its MongoDB document representation.
Coerces string prices to floats and stamps lastUpdated with the current Coerces string prices to floats and stamps lastUpdated with the current
@@ -151,7 +151,6 @@ def convert_product_to_mongo(product: Product, category_identifier: str) -> dict
Args: Args:
product: Product to convert. product: Product to convert.
category_identifier: Category suffix retained for signature parity.
Returns: Returns:
The MongoDB document dict for the product. The MongoDB document dict for the product.