File size: 3,127 Bytes
ddc5bbd
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
import uuid
from typing import List, Dict, Optional
from datetime import datetime
from pydantic import BaseModel, Field, PrivateAttr
import sys


''' Class for storing captions generated by SeamlessM4T'''
class UserCaptions(BaseModel):
    _id: uuid.UUID = PrivateAttr(default_factory=uuid.uuid4) # private attr not included in http calls
    author_id: Optional[str] = None
    author_username: Optional[str] = None
    original_text: str
    translated_text: str
    timestamp: datetime = Field(default_factory=datetime.now)

    class Config:
        populate_by_name = True
        json_schema_extra = {
            "example": {
                "author_id": "gLZrfTwXyLUPB3eT7xT2HZnZiZT2",
                "author_username": "shamzino",
                "original_text": "eng: This is original_text english text",
                "translated_text": "spa: este es el texto traducido al español",
                "timestamp": "2024-03-28T16:15:50.956055",
        
            }
        }


'''Class for storing past call records from users'''
class UserCall(BaseModel):
    _id: uuid.UUID = PrivateAttr(default_factory=uuid.uuid4)
    call_id: Optional[str] = None
    caller_id: Optional[str] = None
    callee_id: Optional[str] = None
    creation_date: datetime = Field(default_factory=datetime.now, alias="date")
    captions: Optional[List[UserCaptions]] = None
    key_terms: Optional[dict] = None
    summaries: Optional[dict] = None

        
    class Config:
        populate_by_name = True
        json_schema_extra = {
            "example": {
                "call_id": "65eef930e9abd3b1e3506906",
                "caller_id": "65ede65b6d246e52aaba9d4f",
                "callee_id": "65edda944340ac84c1f00758",
                "captions": [{"author_id": "gLZrfTwXyLUPB3eT7xT2HZnZiZT2", "author_username": "shamzino", "original_text": "eng: This is original_text english text", "translated_text": "spa: este es el texto traducido al español", "timestamp": "2024-03-28T16:15:50.956055"},
                             {"author_id": "g7pR1qCibzQf5mDP9dGtcoWeEc92", "author_username": "benjino", "original_text": "eng: This is source english text", "translated_text": "spa: este es el texto fuente al español",  "timestamp": "2024-03-28T16:16:20.34625"}],
                "key_terms": {"gLZrfTwXyLUPB3eT7xT2HZnZiZT2": ["original_text", "source", "english", "text"], "g7pR1qCibzQf5mDP9dGtcoWeEc92": ["translated_text", "destination", "spanish", "text"]}, 
                "summaries": {"gLZrfTwXyLUPB3eT7xT2HZnZiZT2": "This is a short test on lanuguage translation", "65edda944340ac84c1f00758": "Esta es una breve prueba sobre traducción de idiomas."}
            }
        }
 

''' Class for updating User Call record'''
class UpdateCall(BaseModel):
    call_id: Optional[str] = None
    caller_id: Optional[str] = None
    callee_id: Optional[str] = None
    captions: Optional[List[UserCaptions]] = None
    key_terms: Optional[List[str]] = None

    class Config:
        populate_by_name = True
        json_schema_extra = {
            "example": {
                "duration": "500"
            }
        }