79 lines
1.8 KiB
Python
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]
|