""" DTOs para gestión de relaciones usuario-tenant """ from pydantic import BaseModel, Field from typing import Optional from datetime import datetime class AddUserToTenantRequestDTO(BaseModel): """Request para agregar un usuario a un tenant""" keycloak_user_id: str = Field(..., description="ID del usuario en Keycloak") tenant_id: int = Field(..., description="ID del tenant") role: Optional[str] = Field(None, description="Rol del usuario en el tenant") class RemoveUserFromTenantRequestDTO(BaseModel): """Request para eliminar un usuario de un tenant""" keycloak_user_id: str = Field(..., description="ID del usuario en Keycloak") tenant_id: int = Field(..., description="ID del tenant") soft_delete: bool = Field(True, description="Si True, desactiva. Si False, elimina") class UpdateUserRoleRequestDTO(BaseModel): """Request para actualizar el rol de un usuario en un tenant""" keycloak_user_id: str = Field(..., description="ID del usuario en Keycloak") tenant_id: int = Field(..., description="ID del tenant") role: str = Field(..., description="Nuevo rol del usuario") class UserTenantResponseDTO(BaseModel): """Response con información de relación usuario-tenant""" id: int keycloak_user_id: str tenant_id: int is_active: bool role: Optional[str] created_at: datetime updated_at: datetime class Config: from_attributes = True class TenantBasicInfoDTO(BaseModel): """Información básica de un tenant""" id: int name: str slug: str is_active: bool keycloak_realm: str class Config: from_attributes = True class UserTenantsResponseDTO(BaseModel): """Response con los tenants de un usuario""" keycloak_user_id: str tenants: list[TenantBasicInfoDTO]