PaperBrainAI / backend /app /db /models.py
=Apyhtml20
Initial deploy
99b596a
Raw
History Blame Contribute Delete
2.31 kB
from sqlalchemy import Column, Integer, String, Float, DateTime, ForeignKey, Boolean
from sqlalchemy.orm import relationship
from datetime import datetime
from app.db.database import Base
class User(Base):
__tablename__ = "users"
id = Column(Integer, primary_key=True, index=True)
username = Column(String, unique=True, index=True)
email = Column(String, unique=True, index=True)
password = Column(String)
niveau = Column(String, default="débutant")
streak_days = Column(Integer, default=0)
last_login = Column(DateTime, default=datetime.utcnow)
created_at = Column(DateTime, default=datetime.utcnow)
is_active = Column(Boolean, default=True)
quiz_results = relationship("QuizResult", back_populates="user")
study_sessions = relationship("StudySession", back_populates="user")
class QuizResult(Base):
__tablename__ = "quiz_results"
id = Column(Integer, primary_key=True, index=True)
user_id = Column(Integer, ForeignKey("users.id"))
topic = Column(String)
score = Column(Float)
total_questions = Column(Integer)
correct_answers = Column(Integer)
difficulty = Column(String, default="medium")
duration_sec = Column(Integer, default=0)
created_at = Column(DateTime, default=datetime.utcnow)
user = relationship("User", back_populates="quiz_results")
class StudySession(Base):
__tablename__ = "study_sessions"
id = Column(Integer, primary_key=True, index=True)
user_id = Column(Integer, ForeignKey("users.id"))
action = Column(String) # chat, quiz, flashcards, explain, rag-qa
subject = Column(String, default="general")
duration = Column(Integer, default=0)
created_at = Column(DateTime, default=datetime.utcnow)
user = relationship("User", back_populates="study_sessions")
class FlashcardProgress(Base):
__tablename__ = "flashcard_progress"
id = Column(Integer, primary_key=True, index=True)
user_id = Column(Integer, ForeignKey("users.id"))
topic = Column(String)
known = Column(Integer, default=0)
unknown = Column(Integer, default=0)
created_at = Column(DateTime, default=datetime.utcnow)