28 lines
1.1 KiB
Python
28 lines
1.1 KiB
Python
from fastapi import APIRouter, Depends, HTTPException
|
|
from sqlalchemy.orm import Session
|
|
from app.core.database import get_db
|
|
from app.core.security_admin import get_current_admin
|
|
from app.models.board import Board
|
|
from app.schemas.board import BoardCreate, BoardOut
|
|
from app.models.admin_user import AdminUser
|
|
|
|
router = APIRouter()
|
|
|
|
@router.get("", response_model=list[BoardOut])
|
|
def list_boards(db: Session = Depends(get_db), _: AdminUser = Depends(get_current_admin)):
|
|
return db.query(Board).order_by(Board.id.desc()).all()
|
|
|
|
@router.post("", response_model=BoardOut, status_code=201)
|
|
def create_board(payload: BoardCreate, db: Session = Depends(get_db), _: AdminUser = Depends(get_current_admin)):
|
|
if db.query(Board).filter(Board.code == payload.code).first():
|
|
raise HTTPException(409, "Board code already exists")
|
|
b = Board(**payload.model_dump())
|
|
db.add(b); db.commit(); db.refresh(b)
|
|
return b
|
|
|
|
@router.delete("/{board_id}", status_code=204)
|
|
def delete_board(board_id: int, db: Session = Depends(get_db), _: AdminUser = Depends(get_current_admin)):
|
|
b = db.query(Board).get(board_id)
|
|
if not b: return
|
|
db.delete(b); db.commit()
|