"""Localization & media-ref command handlers — Phase 11.5.""" from __future__ import annotations from uuid import UUID from sqlalchemy.ext.asyncio import AsyncSession from app.schemas.localization import ( ExperienceLocalizationUpdate, ExperienceLocalizationUpsert, ExperienceMediaRefCreate, ExperienceMediaRefUpdate, SiteLocaleBindingCreate, SiteLocaleBindingUpdate, ) from app.services.localization import ExperienceLocalizationService from shared.security import CurrentUser class LocalizationCommands: def __init__(self, session: AsyncSession) -> None: self.service = ExperienceLocalizationService(session) async def create_site_locale_binding( self, tenant_id: UUID, body: SiteLocaleBindingCreate, *, actor: CurrentUser | None, ): return await self.service.create_site_locale_binding( tenant_id, body, actor=actor ) async def update_site_locale_binding( self, tenant_id: UUID, binding_id: UUID, body: SiteLocaleBindingUpdate, *, actor: CurrentUser | None, ): return await self.service.update_site_locale_binding( tenant_id, binding_id, body, actor=actor ) async def soft_delete_site_locale_binding( self, tenant_id: UUID, binding_id: UUID, *, actor: CurrentUser | None ): return await self.service.soft_delete_site_locale_binding( tenant_id, binding_id, actor=actor ) async def upsert_localization( self, tenant_id: UUID, body: ExperienceLocalizationUpsert, *, actor: CurrentUser | None, ): return await self.service.upsert_localization(tenant_id, body, actor=actor) async def update_localization( self, tenant_id: UUID, localization_id: UUID, body: ExperienceLocalizationUpdate, *, actor: CurrentUser | None, ): return await self.service.update_localization( tenant_id, localization_id, body, actor=actor ) async def soft_delete_localization( self, tenant_id: UUID, localization_id: UUID, *, actor: CurrentUser | None ): return await self.service.soft_delete_localization( tenant_id, localization_id, actor=actor ) async def create_media_ref( self, tenant_id: UUID, body: ExperienceMediaRefCreate, *, actor: CurrentUser | None, ): return await self.service.create_media_ref(tenant_id, body, actor=actor) async def update_media_ref( self, tenant_id: UUID, media_ref_id: UUID, body: ExperienceMediaRefUpdate, *, actor: CurrentUser | None, ): return await self.service.update_media_ref( tenant_id, media_ref_id, body, actor=actor ) async def soft_delete_media_ref( self, tenant_id: UUID, media_ref_id: UUID, *, actor: CurrentUser | None ): return await self.service.soft_delete_media_ref( tenant_id, media_ref_id, actor=actor )