class Product(Base):
    __tablename__ = 'products'

    name  = db.Column(db.String(50), unique=True, nullable=False)
    slug =  db.Column(db.String(50), unique=True, nullable=False)
    description  = db.Column(db.Text())
    meta_description  = db.Column(db.String(500))
    meta_keywords  = db.Column(db.String(500))
    sku = db.Column(db.String(100))
    model = db.Column(db.String(200))
    price = db.Column(db.Float())
    old_price = db.Column(db.Float())
    image_url = db.Column(db.String(250))
    is_bestseller = db.Column(db.Boolean())     
    is_featured = db.Column(db.Boolean())    
    quantity = db.Column(db.Integer())
    categories = db.relationship('Category',secondary=product_category,lazy='subquery')
    brands = db.relationship('Brand',secondary=product_brand,lazy='subquery')
    product_status  = db.Column('product_status', Enum(StatusType))
    
    def sale_price(self):           
        if self.old_price > self.price:                
            return self.price           
        else:                
            return None

    def __repr__(self):
        return self.name
class Base(db.Model):
    __abstract__ = True
    id = db.Column(db.Integer, primary_key=True)
    created_date = db.Column(db.DateTime(), default=datetime.now())
    modified_date = db.Column(db.DateTime(),
                              default=datetime.now(),
                              onupdate=datetime.now())
    is_deleted = db.Column(db.Boolean(), default=False)