"""Forms / surveys / appointments query handlers — Phase 11.6.""" from __future__ import annotations from uuid import UUID from sqlalchemy.ext.asyncio import AsyncSession from app.services.forms import ExperienceFormsService from app.specifications.forms import ( AppointmentBookingListSpec, AppointmentPageListSpec, FormListSpec, FormSubmissionListSpec, SurveyListSpec, SurveyResponseListSpec, ) class FormsQueries: def __init__(self, session: AsyncSession) -> None: self.service = ExperienceFormsService(session) async def get_form(self, tenant_id: UUID, form_id: UUID): return await self.service.get_form(tenant_id, form_id) async def list_forms( self, tenant_id: UUID, *, offset: int, limit: int, spec: FormListSpec | None, ): return await self.service.list_forms( tenant_id, offset=offset, limit=limit, spec=spec ) async def get_submission(self, tenant_id: UUID, submission_id: UUID): return await self.service.get_submission(tenant_id, submission_id) async def list_submissions( self, tenant_id: UUID, *, offset: int, limit: int, spec: FormSubmissionListSpec | None, ): return await self.service.list_submissions( tenant_id, offset=offset, limit=limit, spec=spec ) async def get_survey(self, tenant_id: UUID, survey_id: UUID): return await self.service.get_survey(tenant_id, survey_id) async def list_surveys( self, tenant_id: UUID, *, offset: int, limit: int, spec: SurveyListSpec | None, ): return await self.service.list_surveys( tenant_id, offset=offset, limit=limit, spec=spec ) async def get_survey_response(self, tenant_id: UUID, response_id: UUID): return await self.service.get_survey_response(tenant_id, response_id) async def list_survey_responses( self, tenant_id: UUID, *, offset: int, limit: int, spec: SurveyResponseListSpec | None, ): return await self.service.list_survey_responses( tenant_id, offset=offset, limit=limit, spec=spec ) async def get_appointment_page(self, tenant_id: UUID, page_id: UUID): return await self.service.get_appointment_page(tenant_id, page_id) async def list_appointment_pages( self, tenant_id: UUID, *, offset: int, limit: int, spec: AppointmentPageListSpec | None, ): return await self.service.list_appointment_pages( tenant_id, offset=offset, limit=limit, spec=spec ) async def get_booking_ref(self, tenant_id: UUID, booking_id: UUID): return await self.service.get_booking_ref(tenant_id, booking_id) async def list_booking_refs( self, tenant_id: UUID, *, offset: int, limit: int, spec: AppointmentBookingListSpec | None, ): return await self.service.list_booking_refs( tenant_id, offset=offset, limit=limit, spec=spec )