# app/schemas/message.py
from datetime import datetime
from pydantic import BaseModel, validator, Field
from typing import Optional

class MessageBase(BaseModel):
    receiver_id: int
    content: str

class MessageCreate(MessageBase):
    pass

class MessageResponse(MessageBase):
    id: int
    sender_id: int
    sent_at: datetime
    is_read: bool
    is_image: bool = Field(default=False)
    image_url: Optional[str] = Field(default=None)

    class Config:
        orm_mode = True
        
    @validator('is_image', pre=True, always=True)
    def validate_is_image(cls, v, values):
        # Check if the content starts with [IMAGE]:
        content = values.get('content', '')
        return content.startswith('[IMAGE]:')
    
    @validator('image_url', pre=True, always=True)
    def extract_image_url(cls, v, values):
        # Extract image URL from content if it's an image
        content = values.get('content', '')
        if content.startswith('[IMAGE]:'):
            # Extract the URL directly as MediaService already provides a full URL
            return content.replace('[IMAGE]:', '', 1)
        return None
