from sqlalchemy import Column, Integer, String, Float, Boolean, ForeignKey
from sqlalchemy.ext.declarative import declarative_base

Base = declarative_base()

class Order(Base):
    __tablename__ = 'size_chart_orders'
    id = Column(Integer, primary_key=True)
    article = Column(String, nullable=False)  # Now stores only 4-digit article (e.g., '1234')
    size = Column(String, nullable=True)      # Added field for size (e.g., 'S', '43-45')
    height = Column(Float)
    height_min = Column(Float)
    height_max = Column(Float)
    weight = Column(Float)
    weight_min = Column(Float)
    weight_max = Column(Float)
    shoe_size = Column(Float)
    shoe_size_min = Column(Float)
    shoe_size_max = Column(Float)
    status = Column(Boolean)

class ArticleSize(Base):
    __tablename__ = 'size_chart_article_sizes'
    article = Column(String, primary_key=True)  # Now stores only 4-digit article (e.g., '1234')
    size = Column(String, primary_key=True)
    item_type = Column(String, nullable=False)
    gender = Column(String, nullable=False)

class Alias(Base):
    __tablename__ = 'size_chart_aliases'
    old_article = Column(String, primary_key=True)  # Now stores only 4-digit article (e.g., '1234')
    new_article = Column(String, nullable=False)   # Now stores only 4-digit article (e.g., '5678')

class SizeBoundary(Base):
    __tablename__ = 'size_chart_size_boundaries'
    id = Column(Integer, primary_key=True)
    size = Column(String, nullable=True)
    article = Column(String, nullable=True)
    category = Column(String, nullable=True)
    height_min = Column(Float, nullable=True)
    height_max = Column(Float, nullable=True)
    weight_min = Column(Float, nullable=True)
    weight_max = Column(Float, nullable=True)
