from datetime import datetime
from typing import Any, Optional

from pydantic import BaseModel, Field


class MetricEvent(BaseModel):
    event: str
    product_id: Optional[str] = None
    character_id: Optional[str] = None
    conversation_id: Optional[str] = None
    device_id: Optional[str] = None
    timestamp: Optional[datetime] = None
    metadata: dict[str, Any] = Field(default_factory=dict)


class MetricEventResponse(BaseModel):
    ok: bool = True
    id: int
