From 21f3c83a2ccc4470e5cd1ef27714fea544303b1b Mon Sep 17 00:00:00 2001 From: masasibata Date: Wed, 10 Dec 2025 21:14:08 +0300 Subject: [PATCH] refactor(models): rename to *Dto pattern and add ExternalSquads support - Rename HwidSettings to HwidSettingsDto - Rename CustomRemarks to CustomRemarksDto - Maintain backward compatibility via aliases - Update ExternalSquads models to use new DTO classes --- remnawave/models/__init__.py | 6 ++++++ remnawave/models/external_squads.py | 5 +++++ remnawave/models/subscriptions_settings.py | 17 +++++++++++------ 3 files changed, 22 insertions(+), 6 deletions(-) diff --git a/remnawave/models/__init__.py b/remnawave/models/__init__.py index c5a1c5d..9b9d900 100644 --- a/remnawave/models/__init__.py +++ b/remnawave/models/__init__.py @@ -207,6 +207,9 @@ from .subscriptions_settings import ( SubscriptionSettingsResponseDto, UpdateSubscriptionSettingsRequestDto, UpdateSubscriptionSettingsResponseDto, + CustomRemarksDto, + HwidSettingsDto, + # Backward compatibility aliases CustomRemarks, HwidSettings, ) @@ -492,6 +495,9 @@ __all__ = [ "GetSubscriptionSettingsResponseDto", "SubscriptionSettingsResponseDto", "UpdateSubscriptionSettingsRequestDto", + "CustomRemarksDto", + "HwidSettingsDto", + # Backward compatibility aliases "CustomRemarks", "HwidSettings", "UpdateSubscriptionSettingsResponseDto", diff --git a/remnawave/models/external_squads.py b/remnawave/models/external_squads.py index 634256e..ee579d3 100644 --- a/remnawave/models/external_squads.py +++ b/remnawave/models/external_squads.py @@ -4,6 +4,7 @@ from typing import Dict, List, Optional from uuid import UUID from pydantic import BaseModel, Field +from remnawave.models import CustomRemarksDto, HwidSettingsDto class TemplateType(StrEnum): @@ -54,6 +55,8 @@ class ExternalSquadDto(BaseModel): subscription_settings: Optional[ExternalSquadSubscriptionSettingsDto] = Field(None, alias="subscriptionSettings") host_overrides: Optional[ExternalSquadHostOverridesDto] = Field(None, alias="hostOverrides") response_headers: Optional[Dict[str, str]] = Field(None, alias="responseHeaders") + hwid_settings: Optional[HwidSettingsDto] = Field(None, alias="hwidSettings") + custom_remarks: Optional[CustomRemarksDto] = Field(None, alias="customRemarks") created_at: datetime = Field(alias="createdAt") updated_at: datetime = Field(alias="updatedAt") @@ -87,6 +90,8 @@ class UpdateExternalSquadRequestDto(BaseModel): templates: Optional[List[ExternalSquadTemplateDto]] = None subscription_settings: Optional[ExternalSquadSubscriptionSettingsDto] = Field(None, serialization_alias="subscriptionSettings") host_overrides: Optional[ExternalSquadHostOverridesDto] = Field(None, serialization_alias="hostOverrides") + hwid_settings: Optional[HwidSettingsDto] = Field(None, alias="hwidSettings") + custom_remarks: Optional[CustomRemarksDto] = Field(None, alias="customRemarks") response_headers: Optional[Dict[str, str]] = Field(None, serialization_alias="responseHeaders") diff --git a/remnawave/models/subscriptions_settings.py b/remnawave/models/subscriptions_settings.py index 41a69ae..94bc0c5 100644 --- a/remnawave/models/subscriptions_settings.py +++ b/remnawave/models/subscriptions_settings.py @@ -55,7 +55,7 @@ class ResponseRules(BaseModel): rules: List[ResponseRule] -class CustomRemarks(BaseModel): +class CustomRemarksDto(BaseModel): """Custom remarks for different user states""" expired_users: List[str] = Field(alias="expiredUsers", min_length=1) limited_users: List[str] = Field(alias="limitedUsers", min_length=1) @@ -64,7 +64,7 @@ class CustomRemarks(BaseModel): empty_internal_squads: List[str] = Field(alias="emptyInternalSquads", min_length=1) -class HwidSettings(BaseModel): +class HwidSettingsDto(BaseModel): """HWID (Hardware ID) settings""" enabled: bool fallback_device_limit: int = Field(alias="fallbackDeviceLimit") @@ -82,7 +82,7 @@ class SubscriptionSettingsResponseDto(BaseModel): serve_json_at_base_subscription: bool = Field(alias="serveJsonAtBaseSubscription") show_custom_remarks: bool = Field(alias="isShowCustomRemarks") - custom_remarks: CustomRemarks = Field(alias="customRemarks") + custom_remarks: CustomRemarksDto = Field(alias="customRemarks") happ_announce: Optional[str] = Field(None, alias="happAnnounce") happ_routing: Optional[str] = Field(None, alias="happRouting") @@ -90,7 +90,7 @@ class SubscriptionSettingsResponseDto(BaseModel): randomize_hosts: bool = Field(alias="randomizeHosts") response_rules: Optional[ResponseRules] = Field(None, alias="responseRules") - hwid_settings: Optional[HwidSettings] = Field(None, alias="hwidSettings") + hwid_settings: Optional[HwidSettingsDto] = Field(None, alias="hwidSettings") created_at: datetime = Field(alias="createdAt") updated_at: datetime = Field(alias="updatedAt") @@ -118,7 +118,7 @@ class UpdateSubscriptionSettingsRequestDto(BaseModel): ) is_show_custom_remarks: Optional[bool] = Field(None, serialization_alias="isShowCustomRemarks") - custom_remarks: Optional[CustomRemarks] = Field(None, serialization_alias="customRemarks") + custom_remarks: Optional[CustomRemarksDto] = Field(None, serialization_alias="customRemarks") happ_announce: Optional[Annotated[str, StringConstraints(max_length=200)]] = Field( None, serialization_alias="happAnnounce" @@ -130,4 +130,9 @@ class UpdateSubscriptionSettingsRequestDto(BaseModel): randomize_hosts: Optional[bool] = Field(None, serialization_alias="randomizeHosts") response_rules: Optional[ResponseRules] = Field(None, serialization_alias="responseRules") - hwid_settings: Optional[HwidSettings] = Field(None, serialization_alias="hwidSettings") \ No newline at end of file + hwid_settings: Optional[HwidSettingsDto] = Field(None, serialization_alias="hwidSettings") + + +# Backward compatibility aliases +CustomRemarks = CustomRemarksDto +HwidSettings = HwidSettingsDto \ No newline at end of file