"""Profile command handlers — Phase 13.0."""
from __future__ import annotations

from uuid import UUID

from sqlalchemy.ext.asyncio import AsyncSession

from app.schemas.profiles import DoctorCreate, DoctorUpdate, PatientCreate, PatientUpdate
from app.services.profiles import DoctorService, PatientService
from shared.security import CurrentUser


class ProfileCommands:
    def __init__(self, session: AsyncSession) -> None:
        self.doctors = DoctorService(session)
        self.patients = PatientService(session)

    async def create_doctor(
        self, tenant_id: UUID, body: DoctorCreate, *, actor: CurrentUser | None
    ):
        return await self.doctors.create(tenant_id, body, actor=actor)

    async def update_doctor(
        self,
        tenant_id: UUID,
        doctor_id: UUID,
        body: DoctorUpdate,
        *,
        actor: CurrentUser | None,
    ):
        return await self.doctors.update(tenant_id, doctor_id, body, actor=actor)

    async def create_patient(
        self, tenant_id: UUID, body: PatientCreate, *, actor: CurrentUser | None
    ):
        return await self.patients.create(tenant_id, body, actor=actor)

    async def update_patient(
        self,
        tenant_id: UUID,
        patient_id: UUID,
        body: PatientUpdate,
        *,
        actor: CurrentUser | None,
    ):
        return await self.patients.update(tenant_id, patient_id, body, actor=actor)
