♻️ Edit refactor db models to use UUID's instead of integer ID's (#1259)

Co-authored-by: Sebastián Ramírez <tiangolo@gmail.com>
This commit is contained in:
Esteban Maya
2024-07-22 17:49:02 -05:00
committed by GitHub
parent cc480df776
commit e65b427ab1
9 changed files with 746 additions and 561 deletions

View File

@@ -1,3 +1,5 @@
import uuid
from pydantic import EmailStr
from sqlmodel import Field, Relationship, SQLModel
@@ -39,14 +41,14 @@ class UpdatePassword(SQLModel):
# Database model, database table inferred from class name
class User(UserBase, table=True):
id: int | None = Field(default=None, primary_key=True)
id: uuid.UUID = Field(default_factory=uuid.uuid4, primary_key=True)
hashed_password: str
items: list["Item"] = Relationship(back_populates="owner")
# Properties to return via API, id is always required
class UserPublic(UserBase):
id: int
id: uuid.UUID
class UsersPublic(SQLModel):
@@ -72,16 +74,16 @@ class ItemUpdate(ItemBase):
# Database model, database table inferred from class name
class Item(ItemBase, table=True):
id: int | None = Field(default=None, primary_key=True)
id: uuid.UUID = Field(default_factory=uuid.uuid4, primary_key=True)
title: str = Field(max_length=255)
owner_id: int | None = Field(default=None, foreign_key="user.id", nullable=False)
owner_id: uuid.UUID = Field(foreign_key="user.id", nullable=False)
owner: User | None = Relationship(back_populates="items")
# Properties to return via API, id is always required
class ItemPublic(ItemBase):
id: int
owner_id: int
id: uuid.UUID
owner_id: uuid.UUID
class ItemsPublic(SQLModel):
@@ -102,7 +104,7 @@ class Token(SQLModel):
# Contents of JWT token
class TokenPayload(SQLModel):
sub: int | None = None
sub: str | None = None
class NewPassword(SQLModel):