"""Appointment query handlers — Phase 13.1.""" from __future__ import annotations from uuid import UUID from sqlalchemy.ext.asyncio import AsyncSession from app.services.appointments import ( AppointmentService, AppointmentTypeService, AvailabilityWindowService, ScheduleService, WaitingListService, ) from app.specifications.appointments import AppointmentListSpec class AppointmentQueries: def __init__(self, session: AsyncSession) -> None: self.schedules = ScheduleService(session) self.availability = AvailabilityWindowService(session) self.types = AppointmentTypeService(session) self.appointments = AppointmentService(session) self.waiting_list = WaitingListService(session) async def list_schedules(self, tenant_id: UUID, *, offset: int = 0, limit: int = 20): return await self.schedules.list(tenant_id, offset=offset, limit=limit) async def list_availability(self, tenant_id: UUID, *, offset: int = 0, limit: int = 20): return await self.availability.list(tenant_id, offset=offset, limit=limit) async def list_types(self, tenant_id: UUID, *, offset: int = 0, limit: int = 20): return await self.types.list(tenant_id, offset=offset, limit=limit) async def get_appointment(self, tenant_id: UUID, appointment_id: UUID): return await self.appointments.get(tenant_id, appointment_id) async def list_appointments( self, tenant_id: UUID, *, offset: int = 0, limit: int = 20, spec: AppointmentListSpec | None = None, ): return await self.appointments.list(tenant_id, offset=offset, limit=limit, spec=spec) async def list_waiting_list(self, tenant_id: UUID, *, offset: int = 0, limit: int = 20): return await self.waiting_list.list(tenant_id, offset=offset, limit=limit)