54 lines
2.1 KiB
Python
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)) |