| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- from typing import List
- from fastapi import APIRouter, Depends, HTTPException
- from sqlalchemy.orm import Session
- from app.db.session import get_db
- from app.schemas import ModeratorCreate, ModeratorResponse
- from app.crud.crud_moderator import get_moderators, create_moderator, get_moderator, delete_moderator
- from app.api.deps import get_current_user
- from app.models import User
- router = APIRouter()
- @router.get("/", response_model=List[ModeratorResponse])
- def read_moderators(
- skip: int = 0,
- limit: int = 100,
- db: Session = Depends(get_db),
- current_user: User = Depends(get_current_user)
- ):
- moderators = get_moderators(db, skip=skip, limit=limit, creator_id=current_user.id)
- return moderators
- @router.post("/", response_model=ModeratorResponse)
- def create_new_moderator(
- moderator: ModeratorCreate,
- db: Session = Depends(get_db),
- current_user: User = Depends(get_current_user)
- ):
- return create_moderator(db=db, moderator=moderator, creator_id=current_user.id)
- @router.get("/{moderator_id}", response_model=ModeratorResponse)
- def read_moderator(
- moderator_id: int,
- db: Session = Depends(get_db),
- current_user: User = Depends(get_current_user)
- ):
- db_moderator = get_moderator(db, moderator_id=moderator_id)
- if db_moderator is None:
- raise HTTPException(status_code=404, detail="Moderator not found")
- if db_moderator.creator_id != current_user.id and current_user.role != 'admin':
- raise HTTPException(status_code=403, detail="Not enough permissions")
- return db_moderator
- @router.delete("/{moderator_id}", response_model=ModeratorResponse)
- def delete_existing_moderator(
- moderator_id: int,
- db: Session = Depends(get_db),
- current_user: User = Depends(get_current_user)
- ):
- db_moderator = get_moderator(db, moderator_id=moderator_id)
- if db_moderator is None:
- raise HTTPException(status_code=404, detail="Moderator not found")
- if db_moderator.creator_id != current_user.id and current_user.role != 'admin':
- raise HTTPException(status_code=403, detail="Not enough permissions")
- return delete_moderator(db=db, moderator_id=moderator_id)
|