This commit is contained in:
2024-04-21 20:46:17 +00:00
parent 0e2ecd3449
commit 2ca7787dcb
17 changed files with 249 additions and 72 deletions

View File

@@ -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,
)