diff --git 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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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"