HR-ATS-Portal/backend/search/app.py

31 lines
997 B
Python

from fastapi import APIRouter,Depends,Query
from fastapi.responses import JSONResponse
from fastapi import HTTPException
from db_setup import get_session
from sqlalchemy.ext.asyncio import AsyncSession
from search.views import Search
from users.permissions import PermissionTag,require_permission
from dotenv import load_dotenv
load_dotenv()
router = APIRouter()
@router.get("/search/fetch")
async def fetch_search(
current_user: dict = Depends(
require_permission(PermissionTag.JOBS_VIEW,PermissionTag.CANDIDATES_VIEW,require_all=False)
),
q: str | None = Query(None),
limit: int = Query(4,ge=1),
session: AsyncSession = Depends(get_session),
):
try:
service=Search(session=session)
data,total=await service.fetch(q,limit,current_user)
return JSONResponse(content={"data":data,"total":total,"status_code":200})
except HTTPException:
raise
except Exception as e:
raise HTTPException(status_code=500,detail=str(e))