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