Files
RelayOps/backend/app/schemas/telegram.py
2026-06-07 02:32:28 +03:00

79 lines
1.8 KiB
Python

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]