Deploy to Staging / deploy (push) Waiting to run
Lint Backend / lint-backend (push) Waiting to run
Playwright Tests / changes (push) Waiting to run
Playwright Tests / test-playwright (1, 4) (push) Blocked by required conditions
Playwright Tests / test-playwright (2, 4) (push) Blocked by required conditions
Playwright Tests / test-playwright (3, 4) (push) Blocked by required conditions
Playwright Tests / test-playwright (4, 4) (push) Blocked by required conditions
Playwright Tests / merge-playwright-reports (push) Blocked by required conditions
Playwright Tests / alls-green-playwright (push) Blocked by required conditions
Test Backend / test-backend (push) Waiting to run
Test Docker Compose / test-docker-compose (push) Waiting to run
40 lines
1.0 KiB
Python
40 lines
1.0 KiB
Python
import uuid
|
|
from sqlmodel import Field, Relationship, SQLModel
|
|
|
|
from app.models.user import User
|
|
|
|
|
|
# Shared properties
|
|
class ItemBase(SQLModel):
|
|
title: str = Field(min_length=1, max_length=255)
|
|
description: str | None = Field(default=None, max_length=255)
|
|
|
|
|
|
# Properties to receive on item creation
|
|
class ItemCreate(ItemBase):
|
|
pass
|
|
|
|
|
|
# Properties to receive on item update
|
|
class ItemUpdate(ItemBase):
|
|
title: str | None = Field(default=None, min_length=1, max_length=255) # type: ignore
|
|
|
|
|
|
# Database model, database table inferred from class name
|
|
class Item(ItemBase, table=True):
|
|
id: uuid.UUID = Field(default_factory=uuid.uuid4, primary_key=True)
|
|
owner_id: uuid.UUID = Field(
|
|
foreign_key="user.id", nullable=False, ondelete="CASCADE"
|
|
)
|
|
owner: User | None = Relationship(back_populates="items")
|
|
|
|
|
|
# Properties to return via API, id is always required
|
|
class ItemPublic(ItemBase):
|
|
id: uuid.UUID
|
|
owner_id: uuid.UUID
|
|
|
|
|
|
class ItemsPublic(SQLModel):
|
|
data: list[ItemPublic]
|
|
count: int |