feat: Add ORM for user model (#1924)

This commit is contained in:
Matthew Zhou
2024-10-23 10:28:00 -07:00
committed by GitHub
parent a70dea15a4
commit ff4be4576b
16 changed files with 422 additions and 282 deletions

View File

@@ -8,6 +8,7 @@ from sqlalchemy.orm import Mapped, mapped_column
from letta.log import get_logger
from letta.orm.base import Base, CommonSqlalchemyMetaMixins
from letta.orm.errors import NoResultFound
from letta.orm.mixins import is_valid_uuid4
if TYPE_CHECKING:
from pydantic import BaseModel
@@ -42,7 +43,7 @@ class SqlalchemyBase(CommonSqlalchemyMetaMixins, Base):
return
prefix, id_ = value.split("-", 1)
assert prefix == self.__prefix__(), f"{prefix} is not a valid id prefix for {self.__class__.__name__}"
assert SqlalchemyBase.is_valid_uuid4(id_), f"{id_} is not a valid uuid4"
assert is_valid_uuid4(id_), f"{id_} is not a valid uuid4"
self._id = id_
@classmethod
@@ -78,22 +79,11 @@ class SqlalchemyBase(CommonSqlalchemyMetaMixins, Base):
"""
try:
uuid_string = identifier.split("-", 1)[1] if indifferent else identifier.replace(f"{cls.__prefix__()}-", "")
assert SqlalchemyBase.is_valid_uuid4(uuid_string)
assert is_valid_uuid4(uuid_string)
return uuid_string
except ValueError as e:
raise ValueError(f"{identifier} is not a valid identifier for class {cls.__name__}") from e
@classmethod
def is_valid_uuid4(cls, uuid_string: str) -> bool:
try:
# Try to create a UUID object from the string
uuid_obj = UUID(uuid_string)
# Check if the UUID is version 4
return uuid_obj.version == 4
except ValueError:
# Raised if the string is not a valid UUID
return False
@classmethod
def read(
cls,