
async def import_orders(
self,
customer_ids: list[int],
imported_orders: list[dict[str, Any]] = [],
) -> dict[str, Any]:
""" Importē pasūtījumus klientu sarakstam """
results = {
"created": 0,
"failed": 0,
"orders": imported_orders,
}
for customer_id in customer_ids:
try:
# Ārējā API atgriež klienta neapstrādāto pasūtījumu sarakstu.
orders = self.api_client.get_orders(customer_id)
for order in orders:
normalized_order = await self.normalize_order(order)
# Atcelti pasūtījumi nedrīkst nonākt datubāzē
if normalized_order["status"] == "cancelled":
continue
await self.save_order(normalized_order)
results["created"] += 1
results["orders"].append(normalized_order)
except Exception as error:
logger.error(
f"Nevar importēt pasūtījumus klientam {customer_id}: {error}"
)
results["failed"] += 1
return results
async def normalize_order(self, order: dict[str, Any]) -> dict[str, Any]:
"""
Pārvērš pasūtījumu no ārējā API formāta iekšējā formātā.
Ārējā sistēma var atgriezt papildu laukus, tāpēc
importētājs saglabā tikai datus, kas nepieciešami vietējai sistēmai.
Args:
order: Sākotnējais pasūtījums, kas iegūts no API.
Returns:
Normalizēts vārdnīca ar pasūtījuma datiem.
"""