diff options
author | S. Solomon Darnell | 2025-03-28 21:52:21 -0500 |
---|---|---|
committer | S. Solomon Darnell | 2025-03-28 21:52:21 -0500 |
commit | 4a52a71956a8d46fcb7294ac71734504bb09bcc2 (patch) | |
tree | ee3dc5af3b6313e921cd920906356f5d4febc4ed /.venv/lib/python3.12/site-packages/shared/abstractions/user.py | |
parent | cc961e04ba734dd72309fb548a2f97d67d578813 (diff) | |
download | gn-ai-master.tar.gz |
Diffstat (limited to '.venv/lib/python3.12/site-packages/shared/abstractions/user.py')
-rw-r--r-- | .venv/lib/python3.12/site-packages/shared/abstractions/user.py | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/.venv/lib/python3.12/site-packages/shared/abstractions/user.py b/.venv/lib/python3.12/site-packages/shared/abstractions/user.py new file mode 100644 index 00000000..b04ac50b --- /dev/null +++ b/.venv/lib/python3.12/site-packages/shared/abstractions/user.py @@ -0,0 +1,69 @@ +from datetime import datetime +from typing import Optional +from uuid import UUID + +from pydantic import BaseModel, Field + +from shared.abstractions import R2RSerializable + +from ..utils import generate_default_user_collection_id + + +class Collection(BaseModel): + id: UUID + name: str + description: Optional[str] = None + created_at: datetime = Field( + default_factory=datetime.utcnow, + ) + updated_at: datetime = Field( + default_factory=datetime.utcnow, + ) + + class Config: + populate_by_name = True + from_attributes = True + + def __init__(self, **data): + super().__init__(**data) + if self.id is None: + self.id = generate_default_user_collection_id(self.name) + + +class Token(BaseModel): + token: str + token_type: str + + +class TokenData(BaseModel): + email: str + token_type: str + exp: datetime + + +class User(R2RSerializable): + id: UUID + email: str + is_active: bool = True + is_superuser: bool = False + created_at: datetime = datetime.now() + updated_at: datetime = datetime.now() + is_verified: bool = False + collection_ids: list[UUID] = [] + graph_ids: list[UUID] = [] + document_ids: list[UUID] = [] + + # Optional fields (to update or set at creation) + limits_overrides: Optional[dict] = None + metadata: Optional[dict] = None + verification_code_expiry: Optional[datetime] = None + name: Optional[str] = None + bio: Optional[str] = None + profile_picture: Optional[str] = None + total_size_in_bytes: Optional[int] = None + num_files: Optional[int] = None + + account_type: str = "password" + hashed_password: Optional[str] = None + google_id: Optional[str] = None + github_id: Optional[str] = None |