File size: 1,049 Bytes
c8f4a46
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
"""
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
    )