from pydantic import BaseModel,Field,EmailStr,HttpUrl from typing import List , Dict,Optional, Any from datetime import datetime class RequestModel(BaseModel): query: str context: Optional[list[dict]] = None session_id: str chatbot_id:str class Company(BaseModel): name: str metadata: dict class ClientRequest(BaseModel): company_name : str = Field(min_length=3, max_length=100) base_url : Optional[HttpUrl] email:str =EmailStr deployment_url:Optional[HttpUrl] chatbot_name: str = Field(min_length=1, max_length=100) class AddDataRequest(BaseModel): text: str source: str title: str description: str collection_name: str class DeleteDataRequest(BaseModel): document_ids: List[str] collection_name: str class SearchDataByMetaDataRequest(BaseModel): key: str value: str collection_name: str to_retrive: Optional[int] = 100 class DocumentResponse(BaseModel): id: str content: str metadata: dict class UpdatePromptRequest(BaseModel): chatbot_prompt: str class SendChat(BaseModel): chatHistory:List chatbot_id:str session_id:str class AddVisitorRequest(BaseModel): origin_url: Optional[str] = None session_id: Optional[str] = None chatbot_id: Optional[str] = None timezone: Optional[str] = None language: Optional[str] = None is_mobile: Optional[bool] = Field(None, alias="isMobile") user_agent: Optional[str] = Field(None, alias="userAgent") platform: Optional[str] = None referrer: Optional[str] = None location: Optional[Any] = None network_type: Optional[str] = Field(None, alias="networkType") email:Optional[str] = None phone_number:Optional[str] = Field(None, alias="phoneNumber") class QueryUserResponse(BaseModel): id: int session_id: str ip_address: str origin_url: str timezone: Optional[str] = None language: Optional[str] = None is_mobile: Optional[bool] = None user_agent: Optional[str] = None platform:Optional[str] = None referrer: Optional[str] = None location:Optional[Any] = None network_type: Optional[str] = None email:Optional[str] = None phone_number:Optional[str] = None