from pydantic import BaseModel
from typing import List, Optional
import datetime

# --- Pydantic Schemas ---
class ChatRequest(BaseModel):
    message: str

class ChatResponse(BaseModel):
    response: str

class FolderRequest(BaseModel):
    folder_name: str

class UserCreate(BaseModel):
    username: str
    password: str

class ChatSessionModel(BaseModel):
    id: int
    title: str
    created_at: datetime.datetime

    class Config:
        from_attributes = True

class CreateSessionRequest(BaseModel):
    title: str = "New Chat"

class MessageRequest(BaseModel):
    message: str

class DictionaryItemCreate(BaseModel):
    term: str
    definition: str
    verses: Optional[str] = None

class DictionaryItemResponse(DictionaryItemCreate):
    id: int

    class Config:
        from_attributes = True

class DailyBreadBase(BaseModel):
    book: str
    chapter: int
    verse: str
    end_chapter: Optional[int] = None
    end_verse: Optional[str] = None
    content: str

class DailyBreadCreate(DailyBreadBase):
    pass

class DailyBreadResponse(DailyBreadBase):
    id: int
    keywords: Optional[str] = None
    created_at: datetime.datetime

    class Config:
        from_attributes = True

    class Config:
        from_attributes = True

class BibleQACreate(BaseModel):
    question: str
    answer: str
    keywords: Optional[str] = None

class BibleQAResponse(BibleQACreate):
    id: int
    created_at: datetime.datetime

    class Config:
        from_attributes = True

class SimilarityCheckRequest(BaseModel):
    message: str

class SimilarityCheckResponse(BaseModel):
    matches: List[dict]

class SundayMessageResponse(BaseModel):
    id: int
    title: str
    filename: str
    content: str
    keywords: str = None
    uploaded_at: datetime.datetime

    class Config:
        from_attributes = True
