class Role(db.Model, RoleMixin): id = db.Column(db.Integer(), primary_key=True) name = db.Column(db.String(80), unique=True) description = db.Column(db.String(255)) def __repr__(self): return f"<Role: {self.name}>" def __str__(self): return f"{self.name}"
class Reviews(db.Model): id = db.Column(db.Integer, primary_key=True) user_id = db.Column(db.Integer, db.ForeignKey("users.id")) title = db.Column(db.String(50)) body = db.Column(db.Text) star_rating = db.Column(db.Integer) product_id = db.Column(db.Integer, db.ForeignKey("product.id"))
class Coupon(db.Model): id = db.Column(db.Integer, primary_key=True) discount_type = db.Column(db.String(3)) discount = db.Column(db.DECIMAL, nullable=False) experiation_date = db.Column(db.DateTime, nullable=False) users = db.relationship('Users', secondary=user_coupons, backref='coupon')
class Discount(db.Model): id = db.Column(db.Integer, primary_key=True) discount_type = db.Column(db.String(3)) discount = db.Column(db.DECIMAL, nullable=False) experiation_date = db.Column(db.DateTime, nullable=False) products = db.relationship('Product', secondary=product_discounts, backref='discount')
class Users(db.Model, UserMixin): id = db.Column(db.Integer, primary_key=True) username = db.Column(db.String(255), unique=True) password = db.Column(db.String(255)) email = db.Column(db.String(255), unique=True) last_login_at = db.Column(db.DateTime()) current_login_at = db.Column(db.DateTime()) last_login_ip = db.Column(db.String(100)) current_login_ip = db.Column(db.String(100)) login_count = db.Column(db.Integer) active = db.Column(db.Boolean()) confirmed_at = db.Column(db.DateTime()) roles = db.relationship('Role', secondary=roles_users, backref=db.backref('users', lazy='dynamic')) profile_picture = db.Column(db.String(20)) def __repr__(self): return f"<User: {self.username} - {self.email}>" def __str__(self): return f"{self.username} - {self.email}" def get_cart(self): for purchase in self.purchases: if purchase.is_checkout == True: return purchase return None
class Purchase(db.Model): id = db.Column(db.Integer, primary_key=True) user_id = db.Column(db.Integer(), db.ForeignKey('users.id')) purchase_date = db.Column(db.DateTime(), default=datetime.utcnow) payment_confirmation = db.Column(db.String(40)) items = db.relationship("PurchaseItem", backref="purchase") is_checkout = db.Column(db.Boolean(), default=False) user = db.relationship("Users", backref="purchases") def to_dict(self): items = [item.to_dict() for item in self.items] return {'items': items} def __repr__(self): return f"<Purchase ({self.id}) - Total: {self.calc_total()}>" def __str__(self): return f"({self.id}) - Total: {self.calc_total()}" def calc_total(self): return sum([item.calc_total() for item in self.items])