Skip to content

Commit d60acd0

Browse files
committed
Add ItemPurchase model to track purchases
- Introduced a new `ItemPurchase` model to the SQL database, which includes fields for `id`, `item_id`, `user_id`, `quantity`, and `created_at`. - Implemented foreign key relationships for `item_id` and `user_id` with cascade deletion. - Added validation to ensure `quantity` is greater than or equal to 1. - Default value for `created_at` set to the current timestamp in UTC format.
1 parent 8a584ca commit d60acd0

File tree

1 file changed

+14
-0
lines changed

1 file changed

+14
-0
lines changed

backend/app/models.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import uuid
2+
from datetime import datetime, timezone
23

34
from pydantic import EmailStr
45
from sqlmodel import Field, Relationship, SQLModel
@@ -92,6 +93,19 @@ class ItemsPublic(SQLModel):
9293
count: int
9394

9495

96+
# Database model, database table inferred from class name
97+
class ItemPurchase(SQLModel, table=True):
98+
id: uuid.UUID = Field(default_factory=uuid.uuid4, primary_key=True)
99+
item_id: uuid.UUID = Field(
100+
foreign_key="item.id", nullable=False, ondelete="CASCADE"
101+
)
102+
user_id: uuid.UUID = Field(
103+
foreign_key="user.id", nullable=False, ondelete="CASCADE"
104+
)
105+
quantity: int = Field(ge=1)
106+
created_at: datetime = Field(default_factory=lambda: datetime.now(timezone.utc))
107+
108+
95109
# Generic message
96110
class Message(SQLModel):
97111
message: str

0 commit comments

Comments
 (0)