diff --git a/models/user.py b/models/user.py index b5baca2..b4cfb5e 100644 --- a/models/user.py +++ b/models/user.py @@ -1,17 +1,24 @@ -from sqlalchemy import Column, String, Integer, Boolean, DateTime, ForeignKey +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(String, primary_key=True, default=lambda: str(uuid.uuid4())) - username = Column(String, unique=True, nullable=False, index=True) - email = Column(String, unique=True, nullable=False) - password = Column(String, nullable=False) - full_name = Column(String, nullable=False) - is_active = Column(Boolean, default=True) - created_at = Column(DateTime, default=func.now()) - updated_at = Column(DateTime, default=func.now(), onupdate=func.now()) \ No newline at end of file + + 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) \ No newline at end of file