Automated Action 5570e6e49e Add database models for food delivery API
- Create base model with timestamp mixin
- Add user model with roles
- Add restaurant model
- Add menu item model with categories
- Add order and order item models
- Add delivery model
- Fix import issues and linting errors
2025-05-31 03:41:37 +00:00

35 lines
1.0 KiB
Python

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"<User {self.email}>"