""" SQLAlchemy analysis model (Phase 5). """ import uuid from datetime import datetime, timezone from sqlalchemy import Column, DateTime, ForeignKey, String, Text from sqlalchemy.dialects.sqlite import JSON as SQLiteJSON from sqlalchemy.types import JSON from app.core.db import Base, engine def _new_id() -> str: return f"an_{uuid.uuid4().hex[:12]}" # Handle JSON fallback for SQLite vs Postgres JsonType = SQLiteJSON if engine.url.drivername == "sqlite" else JSON class AnalysisRecord(Base): __tablename__ = "analyses" id = Column(String, primary_key=True, default=_new_id) resume_id = Column(String, ForeignKey("resumes.id", ondelete="CASCADE"), nullable=False, index=True) session_id = Column(String, index=True, nullable=False) job_description = Column(Text, nullable=False) target_role = Column(String, nullable=False) result = Column(JsonType, nullable=False) created_at = Column( DateTime(timezone=True), default=lambda: datetime.now(timezone.utc), nullable=False )