File size: 1,687 Bytes
71c1ad2
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# app/api/schemas/requests.py
# Pydantic request models for API endpoints

from pydantic import BaseModel, Field
from typing import Optional


class TextAnalysisRequest(BaseModel):
    """Request body for text analysis."""
    text: str = Field(..., min_length=1, max_length=10000, description="Text content to analyze")
    user_id: Optional[str] = Field(None, description="Optional user ID for history tracking")
    source_app: Optional[str] = Field(None, description="Source application (e.g., 'instagram', 'whatsapp')")
    metadata: Optional[dict] = Field(None, description="Additional metadata")

    model_config = {
        "json_schema_extra": {
            "examples": [
                {
                    "text": "You are so ugly nobody likes you",
                    "user_id": "user_123",
                    "source_app": "instagram",
                }
            ]
        }
    }


class ImageAnalysisRequest(BaseModel):
    """Metadata for image analysis (file sent as multipart)."""
    user_id: Optional[str] = Field(None, description="Optional user ID for history tracking")
    source_app: Optional[str] = Field(None, description="Source application")


class VideoAnalysisRequest(BaseModel):
    """Metadata for video analysis (file sent as multipart)."""
    user_id: Optional[str] = Field(None, description="Optional user ID for history tracking")
    source_app: Optional[str] = Field(None, description="Source application")


class HistoryRequest(BaseModel):
    """Parameters for history queries."""
    limit: int = Field(20, ge=1, le=100, description="Maximum results to return")
    skip: int = Field(0, ge=0, description="Number of results to skip")