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()