import uuid from datetime import datetime from barker.models.meta import Base from sqlalchemy import Column, ForeignKey, Numeric, UniqueConstraint, text from sqlalchemy.dialects.postgresql import UUID from sqlalchemy.orm import relationship class CustomerDiscount(Base): __tablename__ = "customer_discount" __table_args__ = (UniqueConstraint("customer_id", "sale_category_id"),) id = Column( "id", UUID(as_uuid=True), primary_key=True, server_default=text("gen_random_uuid()"), default=uuid.uuid4 ) customer_id = Column("customer_id", UUID(as_uuid=True), ForeignKey("customers.id"), nullable=False) sale_category_id = Column("sale_category_id", UUID(as_uuid=True), ForeignKey("sale_categories.id"), nullable=False) discount = Column("discount", Numeric(precision=15, scale=5), nullable=False) customer = relationship("Customer", back_populates="discounts") sale_category = relationship("SaleCategory") def __init__(self, sale_category_id=None, discount=None, id_=None, customer_id=None, customer=None): self.sale_category_id = sale_category_id self.discount = discount self.id = id_ self.date = datetime.utcnow() if customer is None: self.customer_id = customer_id else: self.customer = customer