from fastapi import APIRouter, HTTPException, Depends, Query import src.messages as messages import src.models as models from src.database import get_session from sqlmodel import Session import src.forms.service as service from src.auth.auth import get_current_user router = APIRouter(prefix='/forms') @router.get('/', response_model=list[models.FormPublic]) async def get_forms( seasons: list[str] = Query([]), productors: list[str] = Query([]), current_season: bool = False, session: Session = Depends(get_session) ): return service.get_all(session, seasons, productors, current_season) @router.get('/{id}', response_model=models.FormPublic) async def get_form(id: int, session: Session = Depends(get_session)): result = service.get_one(session, id) if result is None: raise HTTPException(status_code=404, detail=messages.notfound) return result @router.post('/', response_model=models.FormPublic) async def create_form( form: models.FormCreate, user: models.User = Depends(get_current_user), session: Session = Depends(get_session) ): return service.create_one(session, form) @router.put('/{id}', response_model=models.FormPublic) async def update_form( id: int, form: models.FormUpdate, user: models.User = Depends(get_current_user), session: Session = Depends(get_session) ): result = service.update_one(session, id, form) if result is None: raise HTTPException(status_code=404, detail=messages.notfound) return result @router.delete('/{id}', response_model=models.FormPublic) async def delete_form( id: int, user: models.User = Depends(get_current_user), session: Session = Depends(get_session) ): result = service.delete_one(session, id) if result is None: raise HTTPException(status_code=404, detail=messages.notfound) return result