This commit is contained in:
@@ -6,7 +6,7 @@ from dataclasses import dataclass
|
||||
from datetime import datetime
|
||||
from typing import Any
|
||||
|
||||
from sqlalchemy import select
|
||||
from sqlalchemy import and_, or_, select
|
||||
from sqlalchemy.ext.asyncio import AsyncSession, async_sessionmaker
|
||||
|
||||
from app.domain.cdek_polling import TERMINAL_ORDER_STATUSES
|
||||
@@ -95,17 +95,23 @@ class OrderRepository:
|
||||
*,
|
||||
limit: int,
|
||||
) -> Sequence[Order]:
|
||||
cdek_pending = and_(
|
||||
Order.provider == "cdek",
|
||||
Order.provider_order_id.is_not(None),
|
||||
Order.provider_waybill_url.is_(None),
|
||||
(
|
||||
Order.provider_order_status.is_(None)
|
||||
| Order.provider_order_status.not_in(TERMINAL_ORDER_STATUSES)
|
||||
),
|
||||
)
|
||||
cse_pending = and_(
|
||||
Order.provider == "cse",
|
||||
Order.provider_order_id.is_not(None),
|
||||
Order.provider_waybill_id.is_(None),
|
||||
)
|
||||
statement = (
|
||||
select(Order)
|
||||
.where(
|
||||
Order.provider == "cdek",
|
||||
Order.provider_order_id.is_not(None),
|
||||
Order.provider_waybill_url.is_(None),
|
||||
(
|
||||
Order.provider_order_status.is_(None)
|
||||
| Order.provider_order_status.not_in(TERMINAL_ORDER_STATUSES)
|
||||
),
|
||||
)
|
||||
.where(or_(cdek_pending, cse_pending))
|
||||
.order_by(Order.provider_polled_at.asc().nulls_first())
|
||||
.limit(limit)
|
||||
.with_for_update(skip_locked=True)
|
||||
@@ -173,11 +179,18 @@ class OrderRepository:
|
||||
*,
|
||||
limit: int,
|
||||
) -> Sequence[Order]:
|
||||
cdek_ready = and_(
|
||||
Order.provider == "cdek",
|
||||
Order.provider_waybill_url.is_not(None),
|
||||
)
|
||||
cse_ready = and_(
|
||||
Order.provider == "cse",
|
||||
Order.provider_waybill_id.is_not(None),
|
||||
)
|
||||
statement = (
|
||||
select(Order)
|
||||
.where(
|
||||
Order.provider == "cdek",
|
||||
Order.provider_waybill_url.is_not(None),
|
||||
or_(cdek_ready, cse_ready),
|
||||
Order.waybill_email_sent_at.is_(None),
|
||||
)
|
||||
.order_by(Order.created_at.asc())
|
||||
|
||||
Reference in New Issue
Block a user