Spaces:
Paused
Paused
import uuid | |
from typing import List, Optional | |
from pydantic import BaseModel, Field, SecretStr, PrivateAttr | |
from pydantic.networks import EmailStr | |
from pydantic_mongo import ObjectIdField | |
'''Class for user model used to relate users to past calls''' | |
class User(BaseModel): | |
_id: uuid.UUID = PrivateAttr(default_factory=uuid.uuid4) # private attr not included in http calls | |
user_id: str | |
name: str | |
email: EmailStr = Field(unique=True, index=True) | |
password: SecretStr | |
call_ids: Optional[List[str]] = None | |
class Config: | |
populate_by_name = True | |
json_schema_extra = { | |
"example": { | |
"user_id": "65ede65b6d246e52aaba9d4f", | |
"name": "benjolo", | |
"email": "benjolounchained@gmail.com", | |
"password": "therealbenjolo", | |
"call_ids": ["65e205ced1be3a22854ff300", "65df8c3eba9c7c2ed1b20e85"] | |
} | |
} | |
'''Class for updating user records''' | |
class UpdateUser(BaseModel): | |
user_id: Optional[str] = None | |
name: Optional[str] = None | |
email: Optional[EmailStr] = None | |
''' To decode use -> SecretStr("abc").get_secret_value()''' | |
# password: Optional[SecretStr] | |
call_ids: Optional[List[str]] = None | |
class Config: | |
populate_by_name = True | |
json_schema_extra = { | |
"example": { | |
"email": "benjolounchained21@gmail.com", | |
"call_ids": ["65e205ced1be3a22854ff300", "65df8c3eba9c7c2ed1b20e85", "65eef930e9abd3b1e3506906"] | |
} | |
} | |