File size: 1,536 Bytes
19dc325
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
from fastapi import APIRouter, Depends
from sqlalchemy.orm import Session
from typing import List
from pydantic import BaseModel
import datetime

from app.db.session import SessionLocal
from app.models.score import ResumeScore
from app.models.resume import Resume

router = APIRouter()

def get_db():
    db = SessionLocal()
    try:
        yield db
    finally:
        db.close()

class ProgressItem(BaseModel):
    id: int
    resume_id: str
    filename: str
    ats_score: float
    timestamp: datetime.datetime
    summary_bit: str

from app.api.deps import get_current_user
from app.models.user import User

@router.get("/", response_model=List[ProgressItem])
async def get_progress(db: Session = Depends(get_db), current_user: User = Depends(get_current_user)):
    """Fetch chronological progress of resumes."""
    # Join scores with resume info
    # Filter by user_id
    
    results = db.query(ResumeScore, Resume.filename, Resume.version_number, Resume.version_label)\
        .join(Resume, ResumeScore.resume_id == Resume.resume_id)\
        .filter(ResumeScore.user_id == current_user.id)\
        .order_by(ResumeScore.timestamp.asc()).all()
    
    response = []
    for score, filename, v_num, v_lbl in results:
        response.append({
            "id": score.id,
            "resume_id": score.resume_id,
            "filename": filename,
            "ats_score": score.ats_score,
            "timestamp": score.timestamp,
            "summary_bit": score.missing_skills
        })
        
    return response