"""
Schema definitions for Comics.
"""
from datetime import datetime
from typing import Optional
from pydantic import BaseModel, AnyUrl

from src.db.models.comic import Comic


class ComicResponse(BaseModel):
    """
    Pydantic model for returning Comic objects.
    """
    id: str
    created_date: datetime
    last_modified_date: datetime
    version: int
    title: str
    publisher_id: str
    current_order: bool
    completed: bool
    weblink: Optional[str]

def comic_to_response(comic:  Comic) -> ComicResponse:
    response: ComicResponse = ComicResponse(
            id=comic.id,
            created_date=comic.created_date,
            last_modified_date=comic.last_modified_date,
            version=comic.version,
            title=comic.title,
            publisher_id=comic.publisher_id,
            current_order=comic.current_order,
            completed=comic.completed,
            weblink=comic.weblink
    )
    return response


class ComicSchema(BaseModel):
    """
    Pydantic model for uploading Comic object.
    """
    id: str
    title: str
    weblink: Optional[AnyUrl]
    completed: Optional[bool]
    current_order: Optional[bool]
