sync
This commit is contained in:
@@ -4,6 +4,7 @@ from uuid import UUID, uuid4
|
||||
|
||||
from api.domain import DomainValidationError
|
||||
from api.domain.entity import DomainEntity
|
||||
from api.domain.user.model import UserId
|
||||
from api.domain.value_obj import DomainValueObject
|
||||
|
||||
|
||||
@@ -15,7 +16,9 @@ class CompanyEmail(DomainValueObject):
|
||||
pattern = r"^[\w\.-]+@[a-zA-Z\d\.-]+\.[a-zA-Z]{2,}$"
|
||||
|
||||
if not re.match(pattern, self.value):
|
||||
raise DomainValidationError("Invalid email format. Email must be in the format 'example@example.com'.")
|
||||
raise DomainValidationError(
|
||||
"Invalid email format. Email must be in the format 'example@example.com'."
|
||||
)
|
||||
|
||||
|
||||
@dataclass(frozen=True)
|
||||
@@ -26,7 +29,9 @@ class CompanyName(DomainValueObject):
|
||||
if len(self.value) < 1:
|
||||
raise DomainValidationError("First name must be at least 1 character long.")
|
||||
if len(self.value) > 100:
|
||||
raise DomainValidationError("First name must be at most 100 characters long.")
|
||||
raise DomainValidationError(
|
||||
"First name must be at most 100 characters long."
|
||||
)
|
||||
if not self.value.isalpha():
|
||||
raise DomainValidationError("First name must only contain letters.")
|
||||
|
||||
@@ -36,15 +41,32 @@ class CompanyId(DomainValueObject):
|
||||
value: UUID
|
||||
|
||||
|
||||
@dataclass(frozen=True)
|
||||
class CompanyAddress(DomainValueObject):
|
||||
value: str
|
||||
|
||||
def __post_init__(self) -> None:
|
||||
if len(self.value) < 1:
|
||||
raise DomainValidationError("Address must be at least 1 character long.")
|
||||
if len(self.value) > 100:
|
||||
raise DomainValidationError("Address must be at most 100 characters long.")
|
||||
if not self.value.isalpha():
|
||||
raise DomainValidationError("Address must only contain letters.")
|
||||
|
||||
|
||||
@dataclass
|
||||
class Company(DomainEntity[CompanyId]):
|
||||
name: CompanyName
|
||||
email: CompanyEmail
|
||||
address: CompanyAddress
|
||||
owner_id: UserId
|
||||
|
||||
@staticmethod
|
||||
def create(name: str, email: str) -> "Company":
|
||||
def create(name: str, email: str, address: str, owner_id: str) -> "Company":
|
||||
return Company(
|
||||
id=CompanyId(uuid4()),
|
||||
name=CompanyName(name),
|
||||
email=CompanyEmail(email),
|
||||
address=CompanyAddress(address),
|
||||
owner_id=UserId(UUID(owner_id)),
|
||||
)
|
||||
|
@@ -15,7 +15,9 @@ class UserEmail(DomainValueObject):
|
||||
pattern = r"^[\w\.-]+@[a-zA-Z\d\.-]+\.[a-zA-Z]{2,}$"
|
||||
|
||||
if not re.match(pattern, self.value):
|
||||
raise DomainValidationError("Invalid email format. Email must be in the format 'example@example.com'.")
|
||||
raise DomainValidationError(
|
||||
"Invalid email format. Email must be in the format 'example@example.com'."
|
||||
)
|
||||
|
||||
|
||||
@dataclass(frozen=True)
|
||||
@@ -26,7 +28,9 @@ class UserFirstName(DomainValueObject):
|
||||
if len(self.value) < 1:
|
||||
raise DomainValidationError("First name must be at least 1 character long.")
|
||||
if len(self.value) > 100:
|
||||
raise DomainValidationError("First name must be at most 100 characters long.")
|
||||
raise DomainValidationError(
|
||||
"First name must be at most 100 characters long."
|
||||
)
|
||||
if not self.value.isalpha():
|
||||
raise DomainValidationError("First name must only contain letters.")
|
||||
|
||||
@@ -39,7 +43,9 @@ class UserLastName(DomainValueObject):
|
||||
if len(self.value) < 1:
|
||||
raise DomainValidationError("Last name must be at least 1 character long.")
|
||||
if len(self.value) > 100:
|
||||
raise DomainValidationError("Last name must be at most 100 characters long.")
|
||||
raise DomainValidationError(
|
||||
"Last name must be at most 100 characters long."
|
||||
)
|
||||
if not self.value.isalpha():
|
||||
raise DomainValidationError("Last name must only contain letters.")
|
||||
|
||||
@@ -52,14 +58,16 @@ class UserId(DomainValueObject):
|
||||
@dataclass
|
||||
class User(DomainEntity[UserId]):
|
||||
name: UserFirstName
|
||||
last_name: UserLastName
|
||||
email: UserEmail
|
||||
hashed_password: str
|
||||
|
||||
@staticmethod
|
||||
def create(name: str, email: str, hashed_password: str) -> "User":
|
||||
def create(name: str, last_name: str, email: str, hashed_password: str) -> "User":
|
||||
return User(
|
||||
id=UserId(uuid4()),
|
||||
name=UserFirstName(name),
|
||||
last_name=UserLastName(last_name),
|
||||
email=UserEmail(email),
|
||||
hashed_password=hashed_password,
|
||||
)
|
||||
|
Reference in New Issue
Block a user