mirror of
https://github.com/BEDOLAGA-DEV/remnawave-bedolaga-telegram-bot.git
synced 2026-02-02 18:20:24 +00:00
60 lines
1.5 KiB
Python
60 lines
1.5 KiB
Python
from __future__ import annotations
|
||
|
||
from typing import Any, Optional
|
||
|
||
from pydantic import BaseModel, ConfigDict, Field
|
||
|
||
|
||
class SettingCategorySummary(BaseModel):
|
||
"""Краткое описание категории настройки."""
|
||
|
||
key: str
|
||
label: str
|
||
items: int
|
||
|
||
model_config = ConfigDict(extra="forbid")
|
||
|
||
|
||
class SettingCategoryRef(BaseModel):
|
||
"""Ссылка на категорию, к которой относится настройка."""
|
||
|
||
key: str
|
||
label: str
|
||
|
||
model_config = ConfigDict(extra="forbid")
|
||
|
||
|
||
class SettingChoice(BaseModel):
|
||
"""Вариант значения для настройки с выбором."""
|
||
|
||
value: Any
|
||
label: str
|
||
description: Optional[str] = None
|
||
|
||
model_config = ConfigDict(extra="forbid")
|
||
|
||
|
||
class SettingDefinition(BaseModel):
|
||
"""Полное описание настройки и её текущего состояния."""
|
||
|
||
key: str
|
||
name: str
|
||
category: SettingCategoryRef
|
||
type: str
|
||
is_optional: bool
|
||
current: Any | None = Field(default=None)
|
||
original: Any | None = Field(default=None)
|
||
has_override: bool
|
||
read_only: bool = Field(default=False)
|
||
choices: list[SettingChoice] = Field(default_factory=list)
|
||
|
||
model_config = ConfigDict(extra="forbid")
|
||
|
||
|
||
class SettingUpdateRequest(BaseModel):
|
||
"""Запрос на обновление значения настройки."""
|
||
|
||
value: Any
|
||
|
||
model_config = ConfigDict(extra="forbid")
|