teoat commited on
Commit
4462ac4
·
verified ·
1 Parent(s): 9381a0f

Upload app/modules/evidence/router.py with huggingface_hub

Browse files
Files changed (1) hide show
  1. app/modules/evidence/router.py +89 -0
app/modules/evidence/router.py ADDED
@@ -0,0 +1,89 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import logging
2
+ import uuid
3
+ from typing import Optional
4
+
5
+ from fastapi import (
6
+ APIRouter,
7
+ Body,
8
+ Depends,
9
+ File,
10
+ Form,
11
+ Query,
12
+ UploadFile,
13
+ )
14
+ from pydantic import BaseModel
15
+ from sqlalchemy.orm import Session
16
+
17
+ from app.dependencies import get_current_project_id
18
+ from app.modules.auth.service import auth_service
19
+ from core.database import User, get_db
20
+
21
+ from .service import evidence_service
22
+
23
+ logger = logging.getLogger(__name__)
24
+
25
+ router = APIRouter()
26
+
27
+ # --- Schemas ---
28
+
29
+
30
+ class EvidenceItemResponse(BaseModel):
31
+ id: str
32
+ case_id: str
33
+ file_name: str
34
+ file_type: str
35
+ size_bytes: int
36
+ uploaded_at: Optional[str] = None
37
+ processing_status: str
38
+
39
+
40
+ @router.get("", response_model=dict)
41
+ async def get_evidence(
42
+ case_id: str | None = Query(None),
43
+ file_type: str | None = Query(None),
44
+ q: str | None = Query(None),
45
+ page: int = Query(1, ge=1),
46
+ page_size: int = Query(20, ge=1),
47
+ db: Session = Depends(get_db),
48
+ project_id: str = Depends(get_current_project_id),
49
+ current_user: User = Depends(auth_service.get_current_user),
50
+ ):
51
+ """Get list of evidence items"""
52
+ return evidence_service.get_evidence_paginated(
53
+ db=db,
54
+ page=page,
55
+ page_size=page_size,
56
+ project_id=project_id,
57
+ case_id=case_id,
58
+ file_type=file_type,
59
+ search_query=q,
60
+ )
61
+
62
+
63
+ @router.post("/upload")
64
+ async def upload_evidence(
65
+ case_id: str = Form(...),
66
+ file: UploadFile = File(...),
67
+ description: Optional[str] = Form(None),
68
+ tags: Optional[str] = Form(None),
69
+ db: Session = Depends(get_db),
70
+ project_id: str = Depends(get_current_project_id),
71
+ current_user: User = Depends(auth_service.get_current_user),
72
+ ):
73
+ """Legacy individual file upload"""
74
+ # Simple logic placeholder as in legacy router
75
+ evidence_id = str(uuid.uuid4())
76
+ logger.info(f"Uploading evidence {evidence_id} for case {case_id}")
77
+ return {"message": "Evidence uploaded successfully", "evidence_id": evidence_id}
78
+
79
+
80
+ @router.post("/bulk-delete")
81
+ async def bulk_delete_evidence(
82
+ payload: dict = Body(...),
83
+ db: Session = Depends(get_db),
84
+ current_user: User = Depends(auth_service.get_current_user),
85
+ ):
86
+ """Bulk delete evidence records"""
87
+ ids = payload.get("ids", [])
88
+ count = evidence_service.delete_evidence(db, ids)
89
+ return {"deleted_count": count, "status": "success"}