35 lines
1.2 KiB
Python

from sqlalchemy import Column, Integer, String, Float, DateTime, Boolean, Text, ForeignKey, Table
from sqlalchemy.orm import relationship
from datetime import datetime
from app.database.database import Base
user_wishlist = Table(
"user_wishlist",
Base.metadata,
Column("user_id", Integer, ForeignKey("user.id"), primary_key=True),
Column("product_id", Integer, ForeignKey("product.id"), primary_key=True),
)
class User(Base):
__tablename__ = "user"
id = Column(Integer, primary_key=True, index=True)
email = Column(String, unique=True, index=True)
hashed_password = Column(String)
full_name = Column(String)
phone = Column(String, nullable=True)
address = Column(String, nullable=True)
city = Column(String, nullable=True)
postal_code = Column(String, nullable=True)
country = Column(String, nullable=True)
is_active = Column(Boolean, default=True)
is_admin = Column(Boolean, default=False)
created_at = Column(DateTime, default=datetime.utcnow)
cart = relationship("Cart", back_populates="user", uselist=False)
orders = relationship("Order", back_populates="user")
wishlist = relationship(
"Product", secondary=user_wishlist, backref="wishlisted_by"
)