so much stuff lol
This commit is contained in:
@ -12,16 +12,13 @@ class Box(Base):
|
||||
set_code = Column(String)
|
||||
sku = Column(Integer)
|
||||
name = Column(String)
|
||||
game_id = Column(Integer, ForeignKey("games.id"))
|
||||
expected_number_of_cards = Column(Integer)
|
||||
description = Column(String)
|
||||
image_url = Column(String)
|
||||
created_at = Column(DateTime(timezone=True), server_default=func.now())
|
||||
updated_at = Column(DateTime(timezone=True), onupdate=func.now())
|
||||
|
||||
# Relationships
|
||||
cards = relationship("Card", back_populates="box")
|
||||
open_boxes = relationship("OpenBox", back_populates="box")
|
||||
|
||||
class OpenBox(Base):
|
||||
__tablename__ = "open_boxes"
|
||||
|
||||
@ -31,7 +28,3 @@ class OpenBox(Base):
|
||||
date_opened = Column(DateTime(timezone=True))
|
||||
created_at = Column(DateTime(timezone=True), server_default=func.now())
|
||||
updated_at = Column(DateTime(timezone=True), onupdate=func.now())
|
||||
|
||||
# Relationships
|
||||
box = relationship("Box", back_populates="open_boxes")
|
||||
cards = relationship("Card", back_populates="open_box")
|
||||
|
@ -1,4 +1,3 @@
|
||||
from pydantic import BaseModel, ConfigDict
|
||||
from typing import List, Optional
|
||||
from datetime import datetime
|
||||
from sqlalchemy import Column, Integer, String, Float, ForeignKey, DateTime
|
||||
@ -13,11 +12,26 @@ class Card(Base):
|
||||
id = Column(Integer, primary_key=True, index=True)
|
||||
name = Column(String, index=True)
|
||||
rarity = Column(String)
|
||||
set_name = Column(String)
|
||||
set_name = Column(String, index=True)
|
||||
price = Column(Float)
|
||||
quantity = Column(Integer, default=0)
|
||||
|
||||
# TCGPlayer specific fields
|
||||
tcgplayer_sku = Column(String, unique=True, index=True)
|
||||
product_line = Column(String)
|
||||
product_name = Column(String)
|
||||
title = Column(String)
|
||||
number = Column(String)
|
||||
condition = Column(String)
|
||||
tcg_market_price = Column(Float)
|
||||
tcg_direct_low = Column(Float)
|
||||
tcg_low_price_with_shipping = Column(Float)
|
||||
tcg_low_price = Column(Float)
|
||||
total_quantity = Column(Integer)
|
||||
add_to_quantity = Column(Integer)
|
||||
tcg_marketplace_price = Column(Float)
|
||||
photo_url = Column(String)
|
||||
|
||||
# Timestamps
|
||||
created_at = Column(DateTime(timezone=True), server_default=func.now())
|
||||
updated_at = Column(DateTime(timezone=True), onupdate=func.now())
|
||||
|
||||
# Relationships
|
||||
orders = relationship("Order", secondary="order_cards", back_populates="cards")
|
||||
|
@ -15,7 +15,4 @@ class File(Base):
|
||||
type = Column(String)
|
||||
path = Column(String)
|
||||
created_at = Column(DateTime(timezone=True), server_default=func.now())
|
||||
updated_at = Column(DateTime(timezone=True), onupdate=func.now())
|
||||
|
||||
|
||||
|
||||
updated_at = Column(DateTime(timezone=True), onupdate=func.now())
|
@ -1,6 +1,3 @@
|
||||
from pydantic import BaseModel, ConfigDict
|
||||
from typing import List, Optional
|
||||
from datetime import datetime
|
||||
from sqlalchemy import Column, Integer, String, DateTime
|
||||
from sqlalchemy.orm import relationship
|
||||
from sqlalchemy.sql import func
|
||||
@ -15,6 +12,3 @@ class Game(Base):
|
||||
image_url = Column(String)
|
||||
created_at = Column(DateTime(timezone=True), server_default=func.now())
|
||||
updated_at = Column(DateTime(timezone=True), onupdate=func.now())
|
||||
|
||||
# Relationships
|
||||
boxes = relationship("Box", back_populates="game")
|
||||
|
28
app/models/inventory.py
Normal file
28
app/models/inventory.py
Normal file
@ -0,0 +1,28 @@
|
||||
from sqlalchemy import Column, Integer, String, Float, DateTime
|
||||
from sqlalchemy.sql import func
|
||||
from app.db.database import Base
|
||||
|
||||
class Inventory(Base):
|
||||
__tablename__ = "inventory"
|
||||
|
||||
id = Column(Integer, primary_key=True, index=True)
|
||||
tcgplayer_id = Column(String, unique=True, index=True)
|
||||
product_line = Column(String)
|
||||
set_name = Column(String)
|
||||
product_name = Column(String)
|
||||
title = Column(String)
|
||||
number = Column(String)
|
||||
rarity = Column(String)
|
||||
condition = Column(String)
|
||||
tcg_market_price = Column(Float)
|
||||
tcg_direct_low = Column(Float)
|
||||
tcg_low_price_with_shipping = Column(Float)
|
||||
tcg_low_price = Column(Float)
|
||||
total_quantity = Column(Integer)
|
||||
add_to_quantity = Column(Integer)
|
||||
tcg_marketplace_price = Column(Float)
|
||||
photo_url = Column(String)
|
||||
|
||||
# Timestamps
|
||||
created_at = Column(DateTime(timezone=True), server_default=func.now())
|
||||
updated_at = Column(DateTime(timezone=True), onupdate=func.now())
|
25
app/models/order.py
Normal file
25
app/models/order.py
Normal file
@ -0,0 +1,25 @@
|
||||
from sqlalchemy import Column, Integer, String, Float, DateTime, ForeignKey
|
||||
from sqlalchemy.orm import relationship
|
||||
from datetime import datetime
|
||||
from app.db.database import Base
|
||||
|
||||
class Order(Base):
|
||||
__tablename__ = "orders"
|
||||
|
||||
id = Column(Integer, primary_key=True, index=True)
|
||||
customer_name = Column(String, index=True)
|
||||
customer_email = Column(String)
|
||||
total_amount = Column(Float)
|
||||
status = Column(String, default="pending") # pending, processing, shipped, delivered, cancelled
|
||||
created_at = Column(DateTime, default=datetime.utcnow)
|
||||
updated_at = Column(DateTime, default=datetime.utcnow, onupdate=datetime.utcnow)
|
||||
|
||||
class OrderCard(Base):
|
||||
__tablename__ = "order_cards"
|
||||
|
||||
id = Column(Integer, primary_key=True, index=True)
|
||||
order_id = Column(Integer, ForeignKey("orders.id"))
|
||||
card_id = Column(Integer, ForeignKey("cards.id"))
|
||||
quantity = Column(Integer, default=1)
|
||||
price_at_time = Column(Float) # Price of the card when ordered
|
||||
created_at = Column(DateTime, default=datetime.utcnow)
|
23
app/models/tcgplayer_category.py
Normal file
23
app/models/tcgplayer_category.py
Normal file
@ -0,0 +1,23 @@
|
||||
from sqlalchemy import Column, Integer, String, Boolean, DateTime
|
||||
from sqlalchemy.sql import func
|
||||
from app.db.database import Base
|
||||
|
||||
class TCGPlayerCategory(Base):
|
||||
__tablename__ = "tcgplayer_categories"
|
||||
|
||||
id = Column(Integer, primary_key=True, index=True)
|
||||
category_id = Column(Integer, unique=True, index=True)
|
||||
name = Column(String, nullable=False)
|
||||
display_name = Column(String)
|
||||
seo_category_name = Column(String)
|
||||
category_description = Column(String)
|
||||
category_page_title = Column(String)
|
||||
sealed_label = Column(String)
|
||||
non_sealed_label = Column(String)
|
||||
condition_guide_url = Column(String)
|
||||
is_scannable = Column(Boolean, default=False)
|
||||
popularity = Column(Integer, default=0)
|
||||
is_direct = Column(Boolean, default=False)
|
||||
modified_on = Column(DateTime)
|
||||
created_at = Column(DateTime(timezone=True), server_default=func.now())
|
||||
updated_at = Column(DateTime(timezone=True), onupdate=func.now())
|
17
app/models/tcgplayer_group.py
Normal file
17
app/models/tcgplayer_group.py
Normal file
@ -0,0 +1,17 @@
|
||||
from sqlalchemy import Column, Integer, String, Boolean, DateTime
|
||||
from sqlalchemy.sql import func
|
||||
from app.db.database import Base
|
||||
|
||||
class TCGPlayerGroup(Base):
|
||||
__tablename__ = "tcgplayer_groups"
|
||||
|
||||
id = Column(Integer, primary_key=True, index=True)
|
||||
group_id = Column(Integer, unique=True, index=True)
|
||||
name = Column(String, nullable=False)
|
||||
abbreviation = Column(String)
|
||||
is_supplemental = Column(Boolean, default=False)
|
||||
published_on = Column(DateTime)
|
||||
modified_on = Column(DateTime)
|
||||
category_id = Column(Integer)
|
||||
created_at = Column(DateTime(timezone=True), server_default=func.now())
|
||||
updated_at = Column(DateTime(timezone=True), onupdate=func.now())
|
27
app/models/tcgplayer_product.py
Normal file
27
app/models/tcgplayer_product.py
Normal file
@ -0,0 +1,27 @@
|
||||
from sqlalchemy import Column, Integer, String, Float, DateTime, ForeignKey
|
||||
from sqlalchemy.sql import func
|
||||
from app.db.database import Base
|
||||
|
||||
class TCGPlayerProduct(Base):
|
||||
__tablename__ = "tcgplayer_products"
|
||||
|
||||
id = Column(Integer, primary_key=True, index=True)
|
||||
product_id = Column(Integer, index=True)
|
||||
name = Column(String, nullable=False)
|
||||
clean_name = Column(String)
|
||||
image_url = Column(String)
|
||||
category_id = Column(Integer)
|
||||
group_id = Column(Integer, ForeignKey("tcgplayer_groups.group_id"))
|
||||
url = Column(String)
|
||||
modified_on = Column(DateTime)
|
||||
image_count = Column(Integer)
|
||||
ext_rarity = Column(String)
|
||||
ext_number = Column(String)
|
||||
low_price = Column(Float)
|
||||
mid_price = Column(Float)
|
||||
high_price = Column(Float)
|
||||
market_price = Column(Float)
|
||||
direct_low_price = Column(Float)
|
||||
sub_type_name = Column(String)
|
||||
created_at = Column(DateTime(timezone=True), server_default=func.now())
|
||||
updated_at = Column(DateTime(timezone=True), onupdate=func.now())
|
Reference in New Issue
Block a user