"""Tracking query handlers — Phase 10.7.""" from __future__ import annotations from uuid import UUID from sqlalchemy.ext.asyncio import AsyncSession from app.services.tracking import ( CustomerTrackingTokenService, ProofOfDeliveryService, TrackingSessionService, ) from app.specifications.tracking import ( CustomerTrackingTokenListSpec, ProofOfDeliveryListSpec, TrackingSessionListSpec, ) class TrackingQueries: def __init__(self, session: AsyncSession) -> None: self.sessions = TrackingSessionService(session) self.pod = ProofOfDeliveryService(session) self.tokens = CustomerTrackingTokenService(session) async def get_session(self, tenant_id: UUID, session_id: UUID): return await self.sessions.get(tenant_id, session_id) async def list_sessions( self, tenant_id: UUID, *, offset: int, limit: int, spec: TrackingSessionListSpec | None, ): return await self.sessions.list( tenant_id, offset=offset, limit=limit, spec=spec ) async def list_points(self, tenant_id: UUID, session_id: UUID, *, limit: int = 500): return await self.sessions.list_points(tenant_id, session_id, limit=limit) async def get_pod(self, tenant_id: UUID, pod_id: UUID): return await self.pod.get(tenant_id, pod_id) async def list_pods( self, tenant_id: UUID, *, offset: int, limit: int, spec: ProofOfDeliveryListSpec | None, ): return await self.pod.list(tenant_id, offset=offset, limit=limit, spec=spec) async def get_token(self, tenant_id: UUID, token_id: UUID): return await self.tokens.get(tenant_id, token_id) async def list_tokens( self, tenant_id: UUID, *, offset: int, limit: int, spec: CustomerTrackingTokenListSpec | None, ): return await self.tokens.list(tenant_id, offset=offset, limit=limit, spec=spec)