deepakkumarsoni/aicoach
1
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")