learnlanguage / backend /app /db /models.py
hamouchi zineb
Deploy clean version to HF Space (no binary files)
009f914
from sqlalchemy import Column, Integer, String, DateTime, ForeignKey, Text, func
from sqlalchemy.orm import relationship
from datetime import datetime
from .session import Base
class User(Base):
__tablename__ = "users"
id = Column(Integer, primary_key=True, index=True)
email = Column(String(255), unique=True, index=True, nullable=False)
username = Column(String(80), unique=True, index=True, nullable=False)
password_hash = Column(String(255), nullable=False)
created_at = Column(DateTime, default=datetime.utcnow)
messages = relationship("Message", back_populates="user", cascade="all, delete-orphan")
class Message(Base):
__tablename__ = "messages"
id = Column(Integer, primary_key=True, index=True)
user_id = Column(Integer, ForeignKey("users.id"), nullable=False, index=True)
role = Column(String(16), nullable=False) # "user" | "bot"
text = Column(Text, nullable=False)
level = Column(String(8), nullable=True)
topic = Column(String(64), nullable=True)
created_at = Column(DateTime, default=datetime.utcnow, index=True)
user = relationship("User", back_populates="messages")
class Correction(Base):
__tablename__ = "corrections"
id = Column(Integer, primary_key=True, index=True)
user_id = Column(Integer, ForeignKey("users.id"), nullable=False, index=True) # โœ… ู…ู‡ู…
error = Column(String, nullable=False)
suggestion = Column(String, default="")
explanation = Column(Text, default="")
created_at = Column(DateTime(timezone=True), server_default=func.now())
user = relationship("User")