from fastapi import HTTPException from sqlalchemy.ext.asyncio import AsyncSession from job.candidate.models import Interviews from job.interviews.serializers import serialize_interview class Interview: def __init__(self,session:AsyncSession): self.session=session async def get_interview(self,interview_id=None,inbox_id=None): if interview_id: row=await Interviews.get_interview_by_id(self.session,interview_id) if not row: raise HTTPException(status_code=404,detail="Interview not found") return serialize_interview(row) if inbox_id is None: raise HTTPException(status_code=400,detail="interview_id or inbox_id is required") rows=await Interviews.get_interviews_by_inbox(self.session,int(inbox_id)) return [serialize_interview(r) for r in rows] async def create_interview(self,payload): fields={ "interview_date":payload.get("interview_date"), "interview_time":payload.get("interview_time"), "interview_type":payload.get("interview_type") or "", "interview_status":payload.get("interview_status") or "", "inbox_id":payload.get("inbox_id"), } fields={k:v for k,v in fields.items() if v is not None} row=await Interviews.insert_interview(self.session,fields) return serialize_interview(row) async def update_interview(self,interview_id,payload): fields={k:v for k,v in payload.items() if v is not None} if not fields: raise HTTPException(status_code=400,detail="No fields to update") row=await Interviews.update_interview(self.session,interview_id,fields) if not row: raise HTTPException(status_code=404,detail="Interview not found") return serialize_interview(row)