Files
ALwrity/backend/api/facebook_writer/models/event_models.py
2025-08-27 15:49:19 +00:00

61 lines
3.2 KiB
Python

"""Pydantic models for Facebook Event functionality."""
from typing import Optional, List, Dict, Any
from pydantic import BaseModel, Field
from enum import Enum
from datetime import datetime
class EventType(str, Enum):
"""Event type options."""
WORKSHOP = "Workshop"
WEBINAR = "Webinar"
CONFERENCE = "Conference"
NETWORKING = "Networking event"
PRODUCT_LAUNCH = "Product launch"
SALE_PROMOTION = "Sale/Promotion"
COMMUNITY = "Community event"
EDUCATION = "Educational event"
CUSTOM = "Custom"
class EventFormat(str, Enum):
"""Event format options."""
IN_PERSON = "In-person"
VIRTUAL = "Virtual"
HYBRID = "Hybrid"
class FacebookEventRequest(BaseModel):
"""Request model for Facebook event generation."""
event_name: str = Field(..., description="Name of the event")
event_type: EventType = Field(..., description="Type of event")
custom_event_type: Optional[str] = Field(None, description="Custom event type if 'Custom' is selected")
event_format: EventFormat = Field(..., description="Format of the event")
business_type: str = Field(..., description="Type of business hosting the event")
target_audience: str = Field(..., description="Target audience for the event")
event_date: Optional[str] = Field(None, description="Event date (YYYY-MM-DD format)")
event_time: Optional[str] = Field(None, description="Event time")
location: Optional[str] = Field(None, description="Event location (physical address or virtual platform)")
duration: Optional[str] = Field(None, description="Event duration")
key_benefits: Optional[str] = Field(None, description="Key benefits or highlights of attending")
speakers: Optional[str] = Field(None, description="Key speakers or presenters")
agenda: Optional[str] = Field(None, description="Brief agenda or schedule")
ticket_info: Optional[str] = Field(None, description="Ticket pricing and availability")
special_offers: Optional[str] = Field(None, description="Special offers or early bird discounts")
include: Optional[str] = Field(None, description="Additional elements to include")
avoid: Optional[str] = Field(None, description="Elements to avoid")
class FacebookEventResponse(BaseModel):
"""Response model for Facebook event generation."""
success: bool = Field(..., description="Whether the generation was successful")
event_title: Optional[str] = Field(None, description="Generated event title")
event_description: Optional[str] = Field(None, description="Generated event description")
short_description: Optional[str] = Field(None, description="Short version for social media")
key_highlights: Optional[List[str]] = Field(None, description="Key event highlights")
call_to_action: Optional[str] = Field(None, description="Call-to-action text")
hashtag_suggestions: Optional[List[str]] = Field(None, description="Hashtag suggestions")
promotion_tips: Optional[List[str]] = Field(None, description="Event promotion tips")
error: Optional[str] = Field(None, description="Error message if generation failed")
metadata: Optional[Dict[str, Any]] = Field(None, description="Additional metadata about the generation")