| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- from typing import List
- from uuid import UUID
- from fastapi import APIRouter, Depends, HTTPException, status
- from flowsint_core.core.models import Profile
- from flowsint_core.core.postgre_db import get_db
- from flowsint_core.core.services import (
- NotFoundError,
- PermissionDeniedError,
- create_scan_service,
- )
- from sqlalchemy.orm import Session
- from app.api.deps import get_current_user
- from app.api.schemas.scan import ScanRead
- router = APIRouter()
- @router.get("/sketch/{id}", response_model=List[ScanRead])
- def get_scans(
- id: UUID,
- db: Session = Depends(get_db),
- current_user: Profile = Depends(get_current_user),
- ):
- """Get all scans accessible to the current user, linked to a sketch."""
- service = create_scan_service(db)
- return service.get_accessible_scans_by_sketch_id(current_user.id, id)
- @router.get("/{id}", response_model=ScanRead)
- def get_scan_by_id(
- id: UUID,
- db: Session = Depends(get_db),
- current_user: Profile = Depends(get_current_user),
- ):
- service = create_scan_service(db)
- try:
- return service.get_by_id(id, current_user.id)
- except NotFoundError:
- raise HTTPException(status_code=404, detail="Scan not found")
- except PermissionDeniedError:
- raise HTTPException(status_code=403, detail="Forbidden")
- @router.delete("/{id}", status_code=status.HTTP_204_NO_CONTENT)
- def delete_scan_by_id(
- id: UUID,
- db: Session = Depends(get_db),
- current_user: Profile = Depends(get_current_user),
- ):
- service = create_scan_service(db)
- try:
- service.delete(id, current_user.id)
- return None
- except NotFoundError:
- raise HTTPException(status_code=404, detail="Scan not found")
- except PermissionDeniedError:
- raise HTTPException(status_code=403, detail="Forbidden")
|