from sqlalchemy import Column, Integer, String, TIMESTAMP, ForeignKey, Float, Text, Boolean, func from .database import Base from sqlalchemy.orm import relationship from datetime import datetime, timezone class InterviewSlot(Base): __tablename__ = "interview_slots" id = Column(Integer, primary_key=True) user_id = Column(Integer, ForeignKey("users.id"), nullable=True) # Use timezone=True to help SQLAlchemy handle the UTC conversion start_time = Column(TIMESTAMP(timezone=True), nullable=True) is_active = Column(Boolean, default=False) class User(Base): __tablename__ = "users" id = Column(Integer, primary_key=True, index=True) email = Column(String(255)) password_hash = Column(String(255)) full_name = Column(String(100), nullable=False) google_id = Column(String(255)) # FIX: Use func.now() so MySQL generates the timestamp at insertion created_at = Column(TIMESTAMP, server_default=func.now()) interviews = relationship("InterviewSession", back_populates="user") class InterviewSession(Base): __tablename__ = "interview_sessions" id = Column(Integer, primary_key=True, index=True) user_id = Column(Integer, ForeignKey("users.id")) session_uuid = Column(String(255), unique=True) # FIX: Removed parentheses from datetime.now created_at = Column(TIMESTAMP, default=func.now()) user = relationship("User", back_populates="interviews") turns = relationship("InterviewTurn", back_populates="session") class InterviewTurn(Base): __tablename__ = "interview_turns" id = Column(Integer, primary_key=True, index=True) session_id = Column(Integer, ForeignKey("interview_sessions.id")) question = Column(Text) answer = Column(Text) wpm = Column(Integer) accuracy = Column(Float) fillers = Column(String(255)) dominant_behavior = Column(String(50)) session = relationship("InterviewSession", back_populates="turns") class Resume(Base): __tablename__ = "resumes" id = Column(Integer, primary_key=True, index=True) user_id = Column(Integer, ForeignKey("users.id")) file_name = Column(String(255)) file_path = Column(String(355)) # FIX: Use func.now() uploaded_at = Column(TIMESTAMP, server_default=func.now()) user = relationship("User") class ContactMessage(Base): __tablename__ = "contact_messages" id = Column(Integer, primary_key=True, index=True) name = Column(String(100), nullable=False) email = Column(String(100), nullable=False) message = Column(Text, nullable=False) created_at = Column(TIMESTAMP, server_default=func.now())