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))