fix: deduplicate order_number collisions during Firestore orders migration
This commit is contained in:
@@ -71,6 +71,7 @@ async def run() -> None:
|
|||||||
|
|
||||||
records = []
|
records = []
|
||||||
skipped = 0
|
skipped = 0
|
||||||
|
seen_order_numbers: set[str] = set()
|
||||||
for doc in docs:
|
for doc in docs:
|
||||||
d = doc.to_dict()
|
d = doc.to_dict()
|
||||||
|
|
||||||
@@ -91,6 +92,12 @@ async def run() -> None:
|
|||||||
continue
|
continue
|
||||||
|
|
||||||
order_number = d.get("order_number") or f"ORD-LEGACY-{doc.id}"
|
order_number = d.get("order_number") or f"ORD-LEGACY-{doc.id}"
|
||||||
|
# Deduplicate: if this order_number was already seen in this batch,
|
||||||
|
# make it unique by appending the doc ID suffix.
|
||||||
|
if order_number in seen_order_numbers:
|
||||||
|
order_number = f"{order_number}-{doc.id[:8]}"
|
||||||
|
print(f" INFO: duplicate order_number — renamed to {order_number}")
|
||||||
|
seen_order_numbers.add(order_number)
|
||||||
|
|
||||||
created_at = _coerce_dt(d.get("created_at")) or _now_utc()
|
created_at = _coerce_dt(d.get("created_at")) or _now_utc()
|
||||||
updated_at = _coerce_dt(d.get("updated_at")) or _now_utc()
|
updated_at = _coerce_dt(d.get("updated_at")) or _now_utc()
|
||||||
|
|||||||
Reference in New Issue
Block a user