from fastapi import APIRouter, Depends, UploadFile, File from sqlalchemy.orm import Session from typing import Optional from app.db.database import get_db from app.services.guest import GuestService from app.schemas.non_conformity import NonConformity, NonConformityUpdate from app.schemas.evidence import Evidence router = APIRouter() def get_guest_service(db: Session = Depends(get_db)) -> GuestService: return GuestService(db) @router.get("/nc/{access_hash}", response_model=NonConformity) def read_guest_nc( access_hash: str, service: GuestService = Depends(get_guest_service) ): return service.get_nc_by_hash(access_hash) @router.patch("/nc/{access_hash}", response_model=NonConformity) def update_guest_nc( access_hash: str, nc_update: NonConformityUpdate, service: GuestService = Depends(get_guest_service) ): return service.update_guest_nc(access_hash, nc_update) @router.post("/nc/{access_hash}/upload", response_model=Evidence) async def upload_guest_evidence( access_hash: str, file: UploadFile = File(...), description: Optional[str] = None, service: GuestService = Depends(get_guest_service) ): return service.upload_guest_evidence(access_hash, file, description)