migrate session handling to aioweb_tls/refactoring of helpers
This commit is contained in:
1 parent
3a8a12ac6e
commit
1441e7179c
10 files changed
+244
-295
No files matched your search
@@ -99,7 +99,8 @@ async def add_products_to_database(
|
||||
price is lower (a drop) and cleared otherwise, so any price_before_drop on
|
||||
the incoming product is ignored. Prices are recorded in a pastPrices array
|
||||
of price/date entries; a price already present in the array is never
|
||||
recorded again, so each distinct price keeps only its first-seen timestamp. New products and never-before-recorded prices
|
||||
recorded again, so each distinct price keeps only its first-seen timestamp.
|
||||
New products and never-before-recorded prices
|
||||
upsert an alert referencing the product; a price returning to a value
|
||||
already in pastPrices emits nothing, so per-source price oscillation
|
||||
(member vs non-member quotes for the same SKU) alerts once per distinct
|
||||
@@ -119,6 +120,12 @@ async def add_products_to_database(
|
||||
product_id.
|
||||
"""
|
||||
|
||||
# Callers are expected to filter empty batches, but guard here too: an empty
|
||||
# products list would make collection.bulk_write([]) raise InvalidOperation,
|
||||
# which callers would then log as a spurious category failure every cycle.
|
||||
if not products:
|
||||
return
|
||||
|
||||
doc_ids = [
|
||||
build_doc_id(p.product_id, category_identifier, use_composite) for p in products
|
||||
]
|
||||
@@ -311,8 +318,10 @@ def build_doc_id(
|
||||
def convert_product_to_mongo(product: Product) -> dict:
|
||||
"""Flatten a Product into its MongoDB document representation.
|
||||
|
||||
Coerces string prices to floats and stamps lastUpdated with the current
|
||||
UTC time. The _id is assigned by the caller via build_doc_id.
|
||||
Stamps lastUpdated with the current UTC time. Prices are already floats via
|
||||
the Product's pydantic validation (numeric strings coerced, comma strings
|
||||
rejected at construction), so no coercion happens here. The _id is assigned
|
||||
by the caller via build_doc_id.
|
||||
|
||||
Args:
|
||||
product: Product to convert.
|
||||
@@ -328,9 +337,6 @@ def convert_product_to_mongo(product: Product) -> dict:
|
||||
availability = data["availability"]
|
||||
current_price = pricing["current_price"]
|
||||
original_price = pricing["original_price"]
|
||||
if isinstance(current_price, str):
|
||||
current_price = float(current_price.replace(",", ""))
|
||||
original_price = float(original_price.replace(",", ""))
|
||||
|
||||
return {
|
||||
"title": data["title"],
|
||||
|
||||
Reference in new issue
Block a user