You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
57 lines
1.7 KiB
Python
57 lines
1.7 KiB
Python
import argparse
|
|
import asyncio
|
|
import json
|
|
import sys
|
|
from pathlib import Path
|
|
|
|
PROJECT_ROOT = Path(__file__).resolve().parents[1]
|
|
if str(PROJECT_ROOT) not in sys.path:
|
|
sys.path.insert(0, str(PROJECT_ROOT))
|
|
|
|
from app.services.integrations.events import SUPPORTED_EVENT_TYPES
|
|
from app.services.integrations.service import SUPPORTED_DELIVERY_STATUSES, process_pending_deliveries
|
|
|
|
|
|
async def _main_async(
|
|
*,
|
|
limit: int,
|
|
delivery_ids: list[int] | None,
|
|
statuses: list[str] | None,
|
|
event_type: str | None,
|
|
provider: str | None,
|
|
route_id: int | None,
|
|
) -> None:
|
|
deliveries = await process_pending_deliveries(
|
|
limit=limit,
|
|
delivery_ids=delivery_ids,
|
|
statuses=statuses,
|
|
event_type=event_type,
|
|
provider=provider,
|
|
route_id=route_id,
|
|
)
|
|
print(json.dumps(deliveries, ensure_ascii=True, indent=2, sort_keys=True))
|
|
|
|
|
|
def main() -> None:
|
|
parser = argparse.ArgumentParser(description="Processa entregas pendentes do outbox de integracoes.")
|
|
parser.add_argument("--limit", type=int, default=20)
|
|
parser.add_argument("--delivery-id", dest="delivery_ids", type=int, action="append")
|
|
parser.add_argument("--status", action="append", choices=SUPPORTED_DELIVERY_STATUSES)
|
|
parser.add_argument("--event", choices=SUPPORTED_EVENT_TYPES)
|
|
parser.add_argument("--provider")
|
|
parser.add_argument("--route-id", type=int)
|
|
args = parser.parse_args()
|
|
asyncio.run(
|
|
_main_async(
|
|
limit=args.limit,
|
|
delivery_ids=args.delivery_ids,
|
|
statuses=args.status,
|
|
event_type=args.event,
|
|
provider=args.provider,
|
|
route_id=args.route_id,
|
|
)
|
|
)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main() |