diff --git a/app/models/node.py b/app/models/node.py index 07b6504..c9fea9b 100644 --- a/app/models/node.py +++ b/app/models/node.py @@ -1,9 +1,9 @@ -from enum import Enum +from enum import StrEnum, IntEnum from pydantic import ConfigDict, BaseModel, Field -class BackendConfigFormat(Enum): +class BackendConfigFormat(IntEnum): PLAIN = 0 JSON = 1 YAML = 2 @@ -25,13 +25,13 @@ class Backend(BaseModel): running: bool -class NodeStatus(str, Enum): +class NodeStatus(StrEnum): healthy = "healthy" unhealthy = "unhealthy" disabled = "disabled" -class NodeConnectionBackend(str, Enum): +class NodeConnectionBackend(StrEnum): grpcio = "grpcio" grpclib = "grpclib" diff --git a/app/models/notification.py b/app/models/notification.py index f5fc6f6..087e02d 100644 --- a/app/models/notification.py +++ b/app/models/notification.py @@ -1,5 +1,5 @@ from datetime import datetime as dt -from enum import Enum +from enum import StrEnum from typing import Optional from pydantic import BaseModel @@ -19,7 +19,7 @@ class AdminNotif(Notification): class UserNotification(Notification): user: UserResponse - class Action(str, Enum): + class Action(StrEnum): user_created = "user_created" user_updated = "user_updated" user_activated = "user_activated" diff --git a/app/models/proxy.py b/app/models/proxy.py index 0873176..266f42b 100644 --- a/app/models/proxy.py +++ b/app/models/proxy.py @@ -1,11 +1,11 @@ -from enum import Enum +from enum import StrEnum, Enum from pydantic import ConfigDict, BaseModel, Field, field_validator from app.models.node import Node -class ProxyTypes(str, Enum): +class ProxyTypes(StrEnum): # proxy_type = protocol VMess = "vmess" VLESS = "vless" @@ -18,7 +18,7 @@ class ProxyTypes(str, Enum): ShadowTLS = "shadowtls" -class InboundHostSecurity(str, Enum): +class InboundHostSecurity(StrEnum): inbound_default = "inbound_default" none = "none" tls = "tls" diff --git a/app/models/settings.py b/app/models/settings.py index 4cb7c1f..0032ef7 100644 --- a/app/models/settings.py +++ b/app/models/settings.py @@ -1,10 +1,10 @@ -from enum import Enum +from enum import StrEnum from typing import Pattern from pydantic import BaseModel -class ConfigTypes(str, Enum): +class ConfigTypes(StrEnum): links = "links" base64_links = "base64-links" xray = "xray" diff --git a/app/models/user.py b/app/models/user.py index 34938c1..cc095c8 100644 --- a/app/models/user.py +++ b/app/models/user.py @@ -1,6 +1,6 @@ import secrets from datetime import datetime -from enum import Enum +from enum import StrEnum from typing import Annotated from pydantic import ( @@ -14,12 +14,12 @@ from pydantic import ( USERNAME_REGEXP = r"^\w{3,32}$" -class UserStatus(str, Enum): +class UserStatus(StrEnum): ACTIVE = "active" INACTIVE = "inactive" -class UserDataUsageResetStrategy(str, Enum): +class UserDataUsageResetStrategy(StrEnum): no_reset = "no_reset" day = "day" week = "week" @@ -27,7 +27,7 @@ class UserDataUsageResetStrategy(str, Enum): year = "year" -class UserExpireStrategy(str, Enum): +class UserExpireStrategy(StrEnum): NEVER = "never" FIXED_DATE = "fixed_date" START_ON_FIRST_USE = "start_on_first_use" diff --git a/app/routes/user.py b/app/routes/user.py index 6b88441..8b5a6ba 100644 --- a/app/routes/user.py +++ b/app/routes/user.py @@ -1,7 +1,7 @@ import asyncio import logging from datetime import datetime, timedelta -from enum import Enum +from enum import StrEnum import sqlalchemy from fastapi import APIRouter @@ -35,7 +35,7 @@ logger = logging.getLogger(__name__) router = APIRouter(prefix="/users", tags=["User"]) -class UsersSortingOptions(str, Enum): +class UsersSortingOptions(StrEnum): USERNAME = "username" USED_TRAFFIC = "used_traffic" DATA_LIMIT = "data_limit" diff --git a/cli/subscription.py b/cli/subscription.py index f8f03c6..d1734f7 100644 --- a/cli/subscription.py +++ b/cli/subscription.py @@ -1,5 +1,5 @@ import typer -from enum import Enum +from enum import StrEnum from typing import Optional from rich.console import Console @@ -13,7 +13,7 @@ app = typer.Typer(no_args_is_help=True) console = Console() -class ConfigFormat(str, Enum): +class ConfigFormat(StrEnum): v2ray = "v2ray" clash = "clash"