so much stuff lol

This commit is contained in:
2025-04-09 23:53:05 -04:00
parent 1c00ea8569
commit df6490cab0
40 changed files with 1909 additions and 277 deletions

View File

@@ -1,50 +1,41 @@
from pydantic import BaseModel, ConfigDict
from typing import Optional, List
from typing import List, Optional
from datetime import datetime
from pydantic import BaseModel
# Base schema with common attributes
class BoxBase(BaseModel):
product_id: int
type: str
set_code: str
sku: int
name: str
expected_number_of_cards: int
description: str
image_url: 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(BaseModel):
product_id: Optional[int] = None
type: Optional[str] = None
set_code: Optional[str] = None
sku: Optional[int] = None
name: Optional[str] = None
expected_number_of_cards: Optional[int] = None
description: Optional[str] = None
image_url: Optional[str] = None
class BoxUpdate(BoxBase):
pass
# Schema for reading a box
class Box(BoxBase):
class BoxInDB(BoxBase):
id: int
created_at: datetime
updated_at: datetime
cards: List["Card"] = []
open_boxes: List["OpenBox"] = []
updated_at: Optional[datetime] = None
model_config = ConfigDict(from_attributes=True)
class Config:
from_attributes = True
# Schema for deleting a box
class BoxDelete(BaseModel):
id: int
message: str
# Schema for listing boxes
class BoxList(BaseModel):
boxes: List[Box]
boxes: List[BoxInDB]
total: int
page: int
limit: int
@@ -52,30 +43,30 @@ class BoxList(BaseModel):
# OpenBox schemas
class OpenBoxBase(BaseModel):
box_id: int
number_of_cards: int
date_opened: datetime
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(BaseModel):
number_of_cards: Optional[int] = None
date_opened: Optional[datetime] = None
class OpenBoxUpdate(OpenBoxBase):
pass
class OpenBox(OpenBoxBase):
class OpenBoxInDB(OpenBoxBase):
id: int
created_at: datetime
updated_at: datetime
box: Optional[Box] = None
cards: List["Card"] = []
updated_at: Optional[datetime] = None
model_config = ConfigDict(from_attributes=True)
class Config:
from_attributes = True
class OpenBoxDelete(BaseModel):
id: int
message: str
class OpenBoxList(BaseModel):
open_boxes: List[OpenBox]
open_boxes: List[OpenBoxInDB]
total: int
page: int
limit: int

View File

@@ -1,39 +1,55 @@
from pydantic import BaseModel, ConfigDict
from typing import Optional, List
from typing import List, Optional
from datetime import datetime
from pydantic import BaseModel
# Base schema with common attributes
class CardBase(BaseModel):
name: str
rarity: str
set_name: str
price: float
quantity: int = 0
rarity: Optional[str] = None
set_name: Optional[str] = None
price: Optional[float] = None
quantity: Optional[int] = 0
# TCGPlayer specific fields
tcgplayer_sku: Optional[str] = None
product_line: Optional[str] = None
product_name: Optional[str] = None
title: Optional[str] = None
number: Optional[str] = None
condition: Optional[str] = None
tcg_market_price: Optional[float] = None
tcg_direct_low: Optional[float] = None
tcg_low_price_with_shipping: Optional[float] = None
tcg_low_price: Optional[float] = None
total_quantity: Optional[int] = None
add_to_quantity: Optional[int] = None
tcg_marketplace_price: Optional[float] = None
photo_url: Optional[str] = None
# Schema for creating a new card
class CardCreate(CardBase):
pass
# Schema for updating a card
class CardUpdate(BaseModel):
name: Optional[str] = None
rarity: Optional[str] = None
set_name: Optional[str] = None
price: Optional[float] = None
quantity: Optional[int] = None
class CardUpdate(CardBase):
pass
# Schema for reading a card (includes id and relationships)
class Card(CardBase):
class CardInDB(CardBase):
id: int
created_at: datetime
updated_at: datetime
orders: List["Order"] = []
updated_at: Optional[datetime] = None
model_config = ConfigDict(from_attributes=True)
class Config:
from_attributes = True
# Schema for listing cards
class CardList(BaseModel):
cards: List[Card]
cards: List[CardInDB]
total: int
page: int
limit: int
limit: int
# Schema for deleting a card
class CardDelete(BaseModel):
message: str

View File

@@ -1,38 +1,40 @@
from pydantic import BaseModel, ConfigDict
from typing import Optional, List
from typing import List, Optional
from datetime import datetime
from pydantic import BaseModel
# Base schema with common attributes
class FileBase(BaseModel):
name: str
type: str
path: str
type: Optional[str] = None
size: Optional[int] = None
content_type: Optional[str] = None
metadata: Optional[dict] = None
# Schema for creating a new file
class FileCreate(FileBase):
pass
# Schema for updating a file
class FileUpdate(BaseModel):
name: Optional[str] = None
type: Optional[str] = None
path: Optional[str] = None
class FileUpdate(FileBase):
pass
# Schema for reading a file
class File(FileBase):
class FileInDB(FileBase):
id: int
created_at: datetime
updated_at: datetime
updated_at: Optional[datetime] = None
model_config = ConfigDict(from_attributes=True)
class Config:
from_attributes = True
# Schema for deleting a file
class FileDelete(BaseModel):
id: int
message: str
# Schema for listing files
class FileList(BaseModel):
files: List[File]
files: List[FileInDB]
total: int
page: int
limit: int

View File

@@ -1,39 +1,41 @@
from pydantic import BaseModel, ConfigDict
from typing import Optional, List
from typing import List, Optional
from datetime import datetime
from pydantic import BaseModel
# Base schema with common attributes
class GameBase(BaseModel):
name: str
description: str
image_url: str
publisher: Optional[str] = None
release_date: Optional[datetime] = None
description: Optional[str] = None
website: Optional[str] = None
logo_url: Optional[str] = None
status: Optional[str] = "active" # active, inactive, discontinued
# Schema for creating a new game
class GameCreate(GameBase):
pass
# Schema for updating a game
class GameUpdate(BaseModel):
name: Optional[str] = None
description: Optional[str] = None
image_url: Optional[str] = None
class GameUpdate(GameBase):
pass
# Schema for reading a game
class Game(GameBase):
class GameInDB(GameBase):
id: int
created_at: datetime
updated_at: datetime
boxes: List["Box"] = []
updated_at: Optional[datetime] = None
model_config = ConfigDict(from_attributes=True)
class Config:
from_attributes = True
# Schema for deleting a game
class GameDelete(BaseModel):
id: int
message: str
# Schema for listing games
class GameList(BaseModel):
games: List[Game]
games: List[GameInDB]
total: int
page: int
limit: int