31 lines
997 B
Python
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))
|