CoolFace
Apppublic

deepakkumarsoni/aicoach

sourceHugging Facemitupdated 7mo agoView on Hugging Face
1likes
models.py189 linesDownload Raw Back to app
1# from sqlalchemy import Column, Integer, String, TIMESTAMP, ForeignKey, Float, Text2# from .database import Base3# from sqlalchemy.orm import relationship4# from datetime import datetime, timezone5 6# class User(Base):7 8#     __tablename__ = "users"9 10#     id = Column(Integer, primary_key=True, index=True)11#     email = Column(String(255))12#     password_hash = Column(String(255))13#     full_name = Column(String(100), nullable=False)14#     google_id = Column(String(255))15#     created_at = Column(TIMESTAMP, default=datetime.now(timezone.utc))16    17#     interviews = relationship("InterviewSession", back_populates="user")18 19 20# class InterviewSession(Base):21#     __tablename__ = "interview_sessions"22 23#     id = Column(Integer, primary_key=True, index=True)24#     user_id = Column(Integer, ForeignKey("users.id"))25#     session_uuid = Column(String(255), unique=True) 26#     created_at = Column(TIMESTAMP, default=datetime.now(timezone.utc))27    28#     user = relationship("User", back_populates="interviews")29#     turns = relationship("InterviewTurn", back_populates="session")30 31# class InterviewTurn(Base):32#     __tablename__ = "interview_turns"33 34#     id = Column(Integer, primary_key=True, index=True)35#     session_id = Column(Integer, ForeignKey("interview_sessions.id"))36#     question = Column(Text)37#     answer = Column(Text)38#     wpm = Column(Integer)39#     accuracy = Column(Float)40#     fillers = Column(String(255))41#     dominant_behavior = Column(String(50))42    43#     session = relationship("InterviewSession", back_populates="turns")44 45 46# class Resume(Base):47#     __tablename__ = "resumes"48#     id = Column(Integer, primary_key=True, index=True)49#     user_id = Column(Integer, ForeignKey("users.id"))50#     file_name = Column(String(255))51#     file_path = Column(String(355))52#     uploaded_at = Column(TIMESTAMP, default=datetime.now(timezone.utc))53    54#     user = relationship("User")55 56 57# from sqlalchemy import Column, Integer, String, TIMESTAMP, ForeignKey, Float, Text, Boolean58# from .database import Base59# from sqlalchemy.orm import relationship60# from datetime import datetime, timezone61# from datetime import datetime, timezone62 63# class InterviewSlot(Base):64#     __tablename__ = "interview_slots"65 66#     id = Column(Integer, primary_key=True)67#     user_id = Column(Integer, ForeignKey("users.id"), nullable=True)68#     start_time = Column(TIMESTAMP, nullable=True)69#     is_active = Column(Boolean, default=False)70 71 72# class User(Base):73 74#     __tablename__ = "users"75 76#     id = Column(Integer, primary_key=True, index=True)77#     email = Column(String(255))78#     password_hash = Column(String(255))79#     full_name = Column(String(100), nullable=False)80#     google_id = Column(String(255))81#     created_at = Column(TIMESTAMP, default=datetime.now(timezone.utc))82    83#     interviews = relationship("InterviewSession", back_populates="user")84 85 86# class InterviewSession(Base):87#     __tablename__ = "interview_sessions"88 89#     id = Column(Integer, primary_key=True, index=True)90#     user_id = Column(Integer, ForeignKey("users.id"))91#     session_uuid = Column(String(255), unique=True) 92#     created_at = Column(TIMESTAMP, default=datetime.now(timezone.utc))93    94#     user = relationship("User", back_populates="interviews")95#     turns = relationship("InterviewTurn", back_populates="session")96 97# class InterviewTurn(Base):98#     __tablename__ = "interview_turns"99 100#     id = Column(Integer, primary_key=True, index=True)101#     session_id = Column(Integer, ForeignKey("interview_sessions.id"))102#     question = Column(Text)103#     answer = Column(Text)104#     wpm = Column(Integer)105#     accuracy = Column(Float)106#     fillers = Column(String(255))107#     dominant_behavior = Column(String(50))108    109#     session = relationship("InterviewSession", back_populates="turns")110 111 112# class Resume(Base):113#     __tablename__ = "resumes"114#     id = Column(Integer, primary_key=True, index=True)115#     user_id = Column(Integer, ForeignKey("users.id"))116#     file_name = Column(String(255))117#     file_path = Column(String(355))118#     uploaded_at = Column(TIMESTAMP, default=datetime.now(timezone.utc))119    120#     user = relationship("User")121 122 123 124 125 126from sqlalchemy import Column, Integer, String, TIMESTAMP, ForeignKey, Float, Text, Boolean, func127from .database import Base128from sqlalchemy.orm import relationship129from datetime import datetime, timezone130 131class InterviewSlot(Base):132    __tablename__ = "interview_slots"133 134    id = Column(Integer, primary_key=True)135    user_id = Column(Integer, ForeignKey("users.id"), nullable=True)136    # Use timezone=True to help SQLAlchemy handle the UTC conversion137    start_time = Column(TIMESTAMP(timezone=True), nullable=True)138    is_active = Column(Boolean, default=False)139 140class User(Base):141    __tablename__ = "users"142 143    id = Column(Integer, primary_key=True, index=True)144    email = Column(String(255))145    password_hash = Column(String(255))146    full_name = Column(String(100), nullable=False)147    google_id = Column(String(255))148    # FIX: Use func.now() so MySQL generates the timestamp at insertion149    created_at = Column(TIMESTAMP, server_default=func.now())150    151    interviews = relationship("InterviewSession", back_populates="user")152 153class InterviewSession(Base):154    __tablename__ = "interview_sessions"155 156    id = Column(Integer, primary_key=True, index=True)157    user_id = Column(Integer, ForeignKey("users.id"))158    session_uuid = Column(String(255), unique=True) 159    # FIX: Removed parentheses from datetime.now160    created_at = Column(TIMESTAMP, default=func.now())161    162    user = relationship("User", back_populates="interviews")163    turns = relationship("InterviewTurn", back_populates="session")164 165class InterviewTurn(Base):166    __tablename__ = "interview_turns"167 168    id = Column(Integer, primary_key=True, index=True)169    session_id = Column(Integer, ForeignKey("interview_sessions.id"))170    question = Column(Text)171    answer = Column(Text)172    wpm = Column(Integer)173    accuracy = Column(Float)174    fillers = Column(String(255))175    dominant_behavior = Column(String(50))176    177    session = relationship("InterviewSession", back_populates="turns")178 179# ... repeat for Resume class ...180class Resume(Base):181    __tablename__ = "resumes"182    id = Column(Integer, primary_key=True, index=True)183    user_id = Column(Integer, ForeignKey("users.id"))184    file_name = Column(String(255))185    file_path = Column(String(355))186    # FIX: Use func.now()187    uploaded_at = Column(TIMESTAMP, server_default=func.now())188    189    user = relationship("User")