"""Routing query handlers — Phase 10.6."""
from __future__ import annotations

from uuid import UUID

from sqlalchemy.ext.asyncio import AsyncSession

from app.services.routing import OptimizationRunService, RoutePlanService
from app.specifications.routing import OptimizationRunListSpec, RoutePlanListSpec


class RoutingQueries:
    def __init__(self, session: AsyncSession) -> None:
        self.routes = RoutePlanService(session)
        self.optimization = OptimizationRunService(session)

    async def get_route(self, tenant_id: UUID, plan_id: UUID):
        return await self.routes.get(tenant_id, plan_id)

    async def list_routes(
        self, tenant_id: UUID, *, offset: int, limit: int, spec: RoutePlanListSpec | None
    ):
        return await self.routes.list(tenant_id, offset=offset, limit=limit, spec=spec)

    async def list_stops(self, tenant_id: UUID, plan_id: UUID):
        return await self.routes.list_stops(tenant_id, plan_id)

    async def get_optimization_run(self, tenant_id: UUID, run_id: UUID):
        return await self.optimization.get(tenant_id, run_id)

    async def list_optimization_runs(
        self,
        tenant_id: UUID,
        *,
        offset: int,
        limit: int,
        spec: OptimizationRunListSpec | None,
    ):
        return await self.optimization.list(
            tenant_id, offset=offset, limit=limit, spec=spec
        )
