2024-10-04 15:36:34 +05:00

50 lines
1.6 KiB
Python

from typing import List
from fastapi import APIRouter, HTTPException, Depends
from sqlalchemy.orm import Session
from app.infrastructure.database.dependencies import get_db
from app.core.entities.role import RoleEntity
from app.core.usecases.role_service import RolesService
router = APIRouter()
@router.get("/roles", response_model=List[RoleEntity])
def read_roles(db: Session = Depends(get_db)):
service = RolesService(db)
return service.get_all_roles()
@router.get("/roles/{role_id}", response_model=RoleEntity)
def read_role(role_id: int, db: Session = Depends(get_db)):
service = RolesService(db)
role = service.get_role_by_id(role_id)
if role is None:
raise HTTPException(status_code=404, detail="Role not found")
return role
@router.post("/roles", response_model=RoleEntity)
def create_role(role: RoleEntity, db: Session = Depends(get_db)):
service = RolesService(db)
return service.create_role(role)
@router.put("/roles/{role_id}", response_model=RoleEntity)
def update_role(role_id: int, role: RoleEntity, db: Session = Depends(get_db)):
service = RolesService(db)
updated_role = service.update_role(role_id, role)
if updated_role is None:
raise HTTPException(status_code=404, detail="Role not found")
return updated_role
@router.delete("/roles/{role_id}", response_model=bool)
def delete_role(role_id: int, db: Session = Depends(get_db)):
service = RolesService(db)
success = service.delete_role(role_id)
if not success:
raise HTTPException(status_code=404, detail="Role not found")
return success