""" Pydantic schemas for WhatsApp messages. """ from datetime import datetime from pydantic import BaseModel, Field class MessageBase(BaseModel): """ Base schema for WhatsApp messages. """ sender_phone: str = Field(..., description="Phone number of the message sender") sender_name: str = Field(..., description="Name of the message sender") message_body: str = Field(..., description="Content of the message") class MessageCreate(MessageBase): """ Schema for creating a new message. """ pass class Message(MessageBase): """ Schema for a message. """ id: int timestamp: datetime analyzed: bool last_analyzed_at: datetime | None = None class Config: """ Pydantic config for the Message schema. """ from_attributes = True # WhatsApp webhook specific schemas class WhatsAppTextMessage(BaseModel): """ Schema for a WhatsApp text message. """ from_: str = Field(..., alias="from") id: str timestamp: str text: dict type: str class WhatsAppValue(BaseModel): """ Schema for WhatsApp webhook value object. """ messaging_product: str metadata: dict contacts: list messages: list[WhatsAppTextMessage] class WhatsAppWebhookEntry(BaseModel): """ Schema for a WhatsApp webhook entry. """ id: str changes: list[dict] class WhatsAppWebhook(BaseModel): """ Schema for a WhatsApp webhook. """ object: str entry: list[WhatsAppWebhookEntry]