88 lines
2.8 KiB
Python
88 lines
2.8 KiB
Python
from fastapi import APIRouter, Depends, UploadFile, File, BackgroundTasks
|
|
from sqlalchemy.orm import Session
|
|
from typing import List, Optional
|
|
from app.db.database import get_db
|
|
from app.models.user import User
|
|
from app.api.deps import get_current_active_user
|
|
from app.services.activities import ActivityService
|
|
from app.schemas.activity import Activity, ActivityCreate, ActivityUpdate
|
|
from app.schemas.evidence import Evidence, EvidenceUpdate
|
|
|
|
router = APIRouter()
|
|
|
|
def get_activity_service(
|
|
db: Session = Depends(get_db),
|
|
current_user: User = Depends(get_current_active_user),
|
|
background_tasks: BackgroundTasks = None
|
|
) -> ActivityService:
|
|
return ActivityService(db, current_user, background_tasks)
|
|
|
|
@router.post("/", response_model=Activity)
|
|
def create_activity(
|
|
activity: ActivityCreate,
|
|
service: ActivityService = Depends(get_activity_service)
|
|
):
|
|
return service.create_activity(activity)
|
|
|
|
@router.get("/", response_model=List[Activity])
|
|
def read_activities(
|
|
project_id: Optional[int] = None,
|
|
specialty_id: Optional[int] = None,
|
|
skip: int = 0,
|
|
limit: int = 100,
|
|
service: ActivityService = Depends(get_activity_service)
|
|
):
|
|
return service.get_activities(project_id, specialty_id, skip, limit)
|
|
|
|
@router.get("/{activity_id}", response_model=Activity)
|
|
def read_activity(
|
|
activity_id: int,
|
|
service: ActivityService = Depends(get_activity_service)
|
|
):
|
|
return service.get_activity(activity_id)
|
|
|
|
@router.put("/{activity_id}", response_model=Activity)
|
|
def update_activity(
|
|
activity_id: int,
|
|
activity: ActivityUpdate,
|
|
service: ActivityService = Depends(get_activity_service)
|
|
):
|
|
return service.update_activity(activity_id, activity)
|
|
|
|
@router.post("/{activity_id}/upload", response_model=Evidence)
|
|
async def upload_evidence(
|
|
activity_id: int,
|
|
file: UploadFile = File(...),
|
|
description: Optional[str] = None,
|
|
captured_at: Optional[str] = None,
|
|
service: ActivityService = Depends(get_activity_service)
|
|
):
|
|
return service.upload_evidence(
|
|
activity_id,
|
|
file,
|
|
description,
|
|
captured_at
|
|
)
|
|
|
|
@router.post("/evidence/{evidence_id}/retry-transcription", response_model=Evidence)
|
|
async def retry_transcription(
|
|
evidence_id: int,
|
|
service: ActivityService = Depends(get_activity_service)
|
|
):
|
|
return service.retry_transcription(evidence_id)
|
|
|
|
@router.put("/evidence/{evidence_id}", response_model=Evidence)
|
|
def update_evidence(
|
|
evidence_id: int,
|
|
evidence: EvidenceUpdate,
|
|
service: ActivityService = Depends(get_activity_service)
|
|
):
|
|
return service.update_evidence(evidence_id, evidence)
|
|
|
|
@router.delete("/evidence/{evidence_id}")
|
|
def delete_evidence(
|
|
evidence_id: int,
|
|
service: ActivityService = Depends(get_activity_service)
|
|
):
|
|
return service.delete_evidence(evidence_id)
|