from enum import Enum from sqlalchemy import Boolean, Column, Enum as SQLEnum, String from app.models.base import BaseModel, TimestampMixin class UserRole(str, Enum): """Enum for user roles.""" ADMIN = "admin" CUSTOMER = "customer" RESTAURANT_OWNER = "restaurant_owner" DELIVERY_DRIVER = "delivery_driver" class User(BaseModel, TimestampMixin): """User model.""" email = Column(String, unique=True, index=True, nullable=False) hashed_password = Column(String, nullable=False) first_name = Column(String, nullable=False) last_name = Column(String, nullable=False) phone = Column(String, nullable=True) address = Column(String, nullable=True) role = Column(SQLEnum(UserRole), default=UserRole.CUSTOMER, nullable=False) is_active = Column(Boolean, default=True, nullable=False) @property def full_name(self) -> str: """Return the user's full name.""" return f"{self.first_name} {self.last_name}" def __repr__(self) -> str: return f""