Files
MOHPortalTest-AllAgents-All…/qwen/python/merchants_of_hope/api/v1/resumes.py
2025-10-24 17:06:14 -05:00

104 lines
3.5 KiB
Python

"""
Resume API routes
"""
from fastapi import APIRouter, Depends, HTTPException, status, Request
from typing import List
from pydantic import BaseModel
from sqlalchemy.orm import Session
from ...database import SessionLocal
from ...models import Resume, User
from ...config.settings import settings
from ...services.resume_service import create_resume, get_user_resumes, get_resume_by_id, update_resume, delete_resume
router = APIRouter()
# Pydantic models for resumes
class ResumeCreate(BaseModel):
title: str
content: str
class Config:
json_schema_extra = {
"example": {
"title": "John Doe's Resume",
"content": "Experienced software engineer with 5 years of experience..."
}
}
class ResumeUpdate(BaseModel):
title: str = None
content: str = None
class ResumeResponse(BaseModel):
id: int
user_id: int
title: str
content: str
is_active: bool
class Config:
from_attributes = True
json_schema_extra = {
"example": {
"id": 1,
"user_id": 1,
"title": "John Doe's Resume",
"content": "Experienced software engineer with 5 years of experience...",
"is_active": True
}
}
@router.get("/", response_model=List[ResumeResponse])
async def get_resumes(db: Session = Depends(SessionLocal)):
"""Get all resumes for the current user"""
# For testing, use default user
user_id = 1 # Default user for testing
resumes = get_user_resumes(db, user_id)
return resumes
@router.get("/{resume_id}", response_model=ResumeResponse)
async def get_resume(resume_id: int, db: Session = Depends(SessionLocal)):
"""Get a specific resume"""
# For testing, use default user
user_id = 1 # Default user for testing
resume = get_resume_by_id(db, resume_id, user_id)
if not resume:
raise HTTPException(status_code=404, detail="Resume not found")
return resume
@router.post("/", response_model=ResumeResponse)
async def create_user_resume(resume: ResumeCreate, db: Session = Depends(SessionLocal)):
"""Create a new resume for the current user"""
# For testing, use default values
user_id = 1 # Default user for testing
tenant_id = 1 # Default tenant for testing
db_resume = create_resume(db, user_id, resume.title, resume.content, tenant_id)
return db_resume
@router.put("/{resume_id}", response_model=ResumeResponse)
async def update_user_resume(resume_id: int, resume_update: ResumeUpdate, db: Session = Depends(SessionLocal)):
"""Update a resume for the current user"""
# For testing, use default values
user_id = 1 # Default user for testing
tenant_id = 1 # Default tenant for testing
db_resume = update_resume(db, resume_id, user_id, tenant_id, resume_update.title, resume_update.content)
if not db_resume:
raise HTTPException(status_code=404, detail="Resume not found")
return db_resume
@router.delete("/{resume_id}")
async def delete_user_resume(resume_id: int, db: Session = Depends(SessionLocal)):
"""Delete a resume for the current user"""
# For testing, use default values
user_id = 1 # Default user for testing
tenant_id = 1 # Default tenant for testing
success = delete_resume(db, resume_id, user_id, tenant_id)
if not success:
raise HTTPException(status_code=404, detail="Resume not found")
return {"message": "Resume deleted successfully"}