Mailbox / app /schema /__init__.py
gavinzli's picture
Implement asynchronous mail collection and improve error logging; make query optional in MailReqData
7eea859
"""Module containing the data models for the application."""
from typing import Optional, List
from pydantic import BaseModel, Field
class ReqData(BaseModel):
"""
RequestData is a Pydantic model that represents the data structure for a request.
Attributes:
query (str): The query string provided by the user.
chat_id (str): The unique identifier for the chat session.
user_id (str): The unique identifier for the user.
web (Optional[bool]): A flag indicating if the request is from the web. Defaults to False.
"""
query: str
id: Optional[List[str]] = []
site: Optional[List[str]] = []
chat_id: str
user_id: str
web: Optional[bool] = False
class MailReqData(BaseModel):
"""
MailReqData is a data model representing the structure of a mail request.
Attributes:
email (str): The email address of the sender.
query (str): The query or message content sent by the user.
"""
email: str
query: Optional[str] = ""
class ReqFollowUp(BaseModel):
"""
RequestFollowUp is a Pydantic model that represents a request for follow-up.
Attributes:
query (str): The query string that needs follow-up.
contexts (list[str]): A list of context strings related to the query.
"""
query: str
contexts: list[str]
class FollowUpQ(BaseModel):
"""
FollowUpQ model to represent a follow-up question based on context information.
Attributes:
question (list[str]): A list of follow-up questions based on context information.
"""
questions: list[str] = Field(..., description="3 Follow up questions based on context.")
class ChatHistory(BaseModel):
"""
ChatHistory model representing a chat session.
Attributes:
chat_id (str): The unique identifier for the chat session.
user_id (str): The unique identifier for the user.
"""
chat_id: str
user_id: str
class ChatSession(BaseModel):
"""
ChatSession model representing a chat session.
Attributes:
user_id (str): The unique identifier for the user.
"""
user_id: str