2025-04-09 23:53:05 -04:00

72 lines
1.5 KiB
Python

from typing import List, Optional
from datetime import datetime
from pydantic import BaseModel
# Base schema with common attributes
class BoxBase(BaseModel):
name: str
description: Optional[str] = None
game_id: int
set_id: Optional[int] = None
price: Optional[float] = None
quantity: Optional[int] = 0
status: Optional[str] = "available" # available, sold, reserved
# Schema for creating a new box
class BoxCreate(BoxBase):
pass
# Schema for updating a box
class BoxUpdate(BoxBase):
pass
# Schema for reading a box
class BoxInDB(BoxBase):
id: int
created_at: datetime
updated_at: Optional[datetime] = None
class Config:
from_attributes = True
# Schema for deleting a box
class BoxDelete(BaseModel):
message: str
# Schema for listing boxes
class BoxList(BaseModel):
boxes: List[BoxInDB]
total: int
page: int
limit: int
# OpenBox schemas
class OpenBoxBase(BaseModel):
box_id: int
opened_at: Optional[datetime] = None
opened_by: Optional[str] = None
contents: Optional[List[dict]] = None
status: Optional[str] = "pending" # pending, opened, verified, listed
class OpenBoxCreate(OpenBoxBase):
pass
class OpenBoxUpdate(OpenBoxBase):
pass
class OpenBoxInDB(OpenBoxBase):
id: int
created_at: datetime
updated_at: Optional[datetime] = None
class Config:
from_attributes = True
class OpenBoxDelete(BaseModel):
message: str
class OpenBoxList(BaseModel):
open_boxes: List[OpenBoxInDB]
total: int
page: int
limit: int