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

54 lines
2.1 KiB
Python

from fastapi import APIRouter,Depends,Query,Response
from fastapi.responses import FileResponse,JSONResponse
from fastapi import HTTPException,Request
from db_setup import get_session
from department.models import Department
from department.views import DepartmentCreate,DepartmentGet
from users.permissions import PermissionTag, require_permission
from sqlalchemy.ext.asyncio import AsyncSession
import uuid
import json
from dotenv import load_dotenv
import logging
from typing import Optional,Annotated
from users.permissions import get_current_user
from pydantic import BaseModel
from uuid import UUID
from typing import Literal, Optional
import os
import uuid
load_dotenv()
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)
router = APIRouter()
@router.post("/create")
async def create_department(
request: Request,
session: Annotated[AsyncSession, Depends(get_session)],
current_user: Annotated[dict, Depends(get_current_user)]):
try:
data=await request.json()
department_data=DepartmentCreate(data,session)
department=await department_data.create_department()
return JSONResponse(status_code=201, content={"message": "Department created successfully", "department": department.model_dump()})
except Exception as e:
logger.error(f"Error creating department: {e}")
raise HTTPException(status_code=500, detail=str(e))
@router.get("/get/{department_id}")
async def get_department_by_id(
session: Annotated[AsyncSession, Depends(get_session)],
department_id:Optional[UUID] = None,
current_user: Annotated[dict, Depends(get_current_user)]):
try:
if not department_id:
# send back the list of all departments
department_data=DepartmentGet(department_id,session)
department=await department_data.get_department_by_id()
return JSONResponse(status_code=200, content={"message": "Department fetched successfully", "department": department.model_dump()})
except Exception as e:
logger.error(f"Error fetching department: {e}")
raise HTTPException(status_code=500, detail=str(e))