""" 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"}