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()