from datetime import datetime from pydantic import BaseModel, Field class TelegramStatusRead(BaseModel): enabled: bool mode: str linked_users_count: int class TelegramLinkCodeRead(BaseModel): link_code: str expires_at: datetime class TelegramLinkRead(BaseModel): id: int user_id: int telegram_user_id: str | None chat_id: str | None linked_at: datetime | None created_at: datetime model_config = {"from_attributes": True} class TelegramLinkCompleteRequest(BaseModel): link_code: str = Field(min_length=6, max_length=32) telegram_user_id: str = Field(min_length=1, max_length=64) chat_id: str = Field(min_length=1, max_length=64) class TelegramCommandIdentity(BaseModel): telegram_user_id: str = Field(min_length=1, max_length=64) class TelegramServicesQuery(TelegramCommandIdentity): server_name: str | None = Field(default=None, min_length=1, max_length=128) class TelegramRestartRequest(TelegramCommandIdentity): server_name: str = Field(min_length=1, max_length=128) service_name: str = Field(min_length=1, max_length=128) class TelegramTestMessageResponse(BaseModel): success: bool = True class TelegramCommandServerStatus(BaseModel): name: str environment: str host: str status: str reachable: bool checked_at: datetime detail: str | None = None class TelegramCommandServiceStatus(BaseModel): server_name: str service_name: str service_type: str status: str detail: str | None = None class TelegramStatusCommandRead(BaseModel): username: str role: str servers: list[TelegramCommandServerStatus] class TelegramServicesCommandRead(BaseModel): username: str role: str services: list[TelegramCommandServiceStatus]