Add User model

This commit is contained in:
Backend IM Bot 2025-03-28 04:36:06 +00:00
parent 18ea09a987
commit 84878b5d9b

View File

@ -1,4 +1,4 @@
from sqlalchemy import Column, String, Integer, Boolean, DateTime, ForeignKey, Enum from sqlalchemy import Column, String, Integer, Boolean, DateTime, ForeignKey, Float
from sqlalchemy.orm import relationship from sqlalchemy.orm import relationship
from sqlalchemy.sql import func from sqlalchemy.sql import func
from core.database import Base from core.database import Base
@ -9,22 +9,22 @@ class User(Base):
__tablename__ = "users" __tablename__ = "users"
id = Column(String, primary_key=True, default=lambda: str(uuid.uuid4())) id = Column(String, primary_key=True, default=lambda: str(uuid.uuid4()))
first_name = Column(String(50), nullable=False) first_name = Column(String, nullable=False)
last_name = Column(String(50), nullable=False) last_name = Column(String, nullable=False)
email = Column(String(100), unique=True, nullable=False, index=True) email = Column(String, unique=True, nullable=False, index=True)
phone = Column(String, nullable=False)
password = Column(String, nullable=False) password = Column(String, nullable=False)
role = Column(Enum('student', 'teacher', 'admin', name='user_roles'), nullable=False) address = Column(String)
phone_number = Column(String(20)) city = Column(String)
address = Column(String(200)) country = Column(String)
date_of_birth = Column(DateTime)
profile_picture = Column(String)
is_active = Column(Boolean, default=True) is_active = Column(Boolean, default=True)
last_login = Column(DateTime) is_admin = Column(Boolean, default=False)
# Relationships
bookings = relationship("Booking", back_populates="user")
reviews = relationship("Review", back_populates="user")
payments = relationship("Payment", back_populates="user")
# Timestamps
created_at = Column(DateTime, default=func.now()) created_at = Column(DateTime, default=func.now())
updated_at = Column(DateTime, default=func.now(), onupdate=func.now()) updated_at = Column(DateTime, default=func.now(), onupdate=func.now())
courses = relationship("Course", secondary="user_courses", back_populates="users")
assignments = relationship("Assignment", back_populates="user")
grades = relationship("Grade", back_populates="user")
attendance = relationship("Attendance", back_populates="user")