47 lines
1.0 KiB
Python
47 lines
1.0 KiB
Python
import re
|
|
|
|
from pydantic import BaseModel, field_validator
|
|
|
|
from core.enums import ServiceStatus
|
|
|
|
|
|
class Service(BaseModel):
|
|
name: str
|
|
ioc_port: int
|
|
status: ServiceStatus
|
|
|
|
@property
|
|
def name_camel(self):
|
|
return self.name
|
|
|
|
@property
|
|
def name_upper(self):
|
|
return self.name.upper()
|
|
|
|
@property
|
|
def name_lower(self):
|
|
return self.name.lower()
|
|
|
|
@property
|
|
def name_lower_underscores(self):
|
|
return self.name.replace("-", "_").lower()
|
|
|
|
@property
|
|
def dir_name(self):
|
|
return self.name.lower()
|
|
|
|
def to_dict(self):
|
|
return {"name": self.name_camel, "ioc_port": self.ioc_port, "status": str(self.status)}
|
|
|
|
class Config:
|
|
use_enum_values = True
|
|
|
|
@field_validator("name")
|
|
@classmethod
|
|
def validate_name_chars(cls, value: str) -> str:
|
|
if not re.match(r"^[a-zA-Z0-9-]+$", value):
|
|
raise ValueError(
|
|
"name can only contain uppercase and lowercase letters, numbers, and dashes"
|
|
)
|
|
return value
|