benjolo's picture
Adding backend/ folder to HF space
d594983 verified
raw
history blame
2.9 kB
import uuid
from typing import List, Dict, Optional
from datetime import datetime
from pydantic import BaseModel, Field, PrivateAttr
import sys
# sys.path.append('/Users/benolojo/DCU/CA4/ca400_FinalYearProject/2024-ca400-olojob2-majdap2/src/backend/src/')
# from pydantic_mongo import ObjectIdField
''' 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: str
original_text: str
translated_text: str
timestamp: datetime = Field(default_factory=datetime.now)
'''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")
duration: Optional[int] = None # milliseconds
captions: Optional[List[UserCaptions]] = None
# captions: List[Dict[str, str | float]]
key_terms: Optional[List[str]] = None
'''Implement validation check on transcript ID if in transcript records'''
# @validator('transcript_id')
# def check_transcript_id_transcripts_collection(cls,transcript_id):
# transcript_ids=['',''] # check transcript_ids in collection
# if transcript_id not in transcript_ids:
# raise ValueError(f'transcript ID must be in {transcript_ids}')
# return transcript_id
class Config:
populate_by_name = True
json_schema_extra = {
"example": {
"call_id": "65eef930e9abd3b1e3506906",
"caller_id": "65ede65b6d246e52aaba9d4f",
"callee_id": "65edda944340ac84c1f00758",
"duration": 360,
"captions": [{"author": "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": "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": ["original_text", "source", "english", "text"]
}
}
''' Class for updating User Call record'''
class UpdateCall(BaseModel):
call_id: Optional[str] = None
caller_id: Optional[str] = None
callee_id: Optional[str] = None
duration: Optional[int] = None
captions: Optional[List[UserCaptions]] = None
key_terms: Optional[List[str]] = None
class Config:
populate_by_name = True
json_schema_extra = {
"example": {
"duration": "500"
}
}