♻️ 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:
@@ -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):
|
||||
|
Reference in New Issue
Block a user