from sqlalchemy import Column, String, Integer, Boolean, DateTime, ForeignKey, Enum from sqlalchemy.orm import relationship from sqlalchemy.sql import func from sqlalchemy.dialects.postgresql import UUID from core.database import Base import uuid from datetime import datetime class User(Base): __tablename__ = "users" id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4) username = Column(String(50), unique=True, nullable=False, index=True) email = Column(String(255), unique=True, nullable=False, index=True) password = Column(String(255), nullable=False) first_name = Column(String(50), nullable=True) last_name = Column(String(50), nullable=True) phone_number = Column(String(20), unique=True, nullable=True) role = Column(Enum('admin', 'user', name='user_roles'), default='user') is_active = Column(Boolean, default=True, nullable=False) is_verified = Column(Boolean, default=False, nullable=False) last_login = Column(DateTime, nullable=True) created_at = Column(DateTime(timezone=True), server_default=func.now(), nullable=False) updated_at = Column(DateTime(timezone=True), server_default=func.now(), onupdate=func.now(), nullable=False)