mirror of
https://github.com/rjNemo/federation
synced 2026-06-06 02:06:39 +00:00
41 lines
939 B
Python
41 lines
939 B
Python
from typing import Optional
|
|
from uuid import uuid4
|
|
|
|
from pydantic import BaseModel, Field, validator
|
|
|
|
|
|
class User(BaseModel):
|
|
id: str = Field(default_factory=uuid4)
|
|
name: str = "John"
|
|
|
|
@property
|
|
def email(self) -> str:
|
|
return f"{self.name.lower().replace(' ', '_')}@mail.com"
|
|
|
|
|
|
FORBIDDEN_NAMES = ["joe dalton"]
|
|
|
|
|
|
class UserInput(BaseModel):
|
|
name: str
|
|
|
|
class Config:
|
|
anystr_strip_whitespace = True
|
|
|
|
@validator("name")
|
|
def name_must_contain_space(cls, name: str) -> str:
|
|
if " " not in name:
|
|
raise ValueError("must contain a space")
|
|
return name.title()
|
|
|
|
@validator("name")
|
|
def name_must_not_be(cls, name: str) -> str:
|
|
if name in FORBIDDEN_NAMES:
|
|
raise ValueError("This name is forbidden")
|
|
return name
|
|
|
|
|
|
class UserResponse(BaseModel):
|
|
success: bool = True
|
|
errorMessage: Optional[str] = None
|
|
user: Optional[User] = None
|