from typing import List, Union

from pydantic import BaseModel


class Photo(BaseModel):
    id: str
    album: str
    hash: str
    filename: str


class PhotoPublic(BaseModel):
    id: str
    caption: str
    filename: str


class PhotoSearch(BaseModel):
    id: str
    filename: str
    caption: Union[str, None]


class Video(BaseModel):
    id: str
    album: str
    hash: str
    filename: str


class VideoPublic(BaseModel):
    id: str
    caption: str
    filename: str


class VideoSearch(BaseModel):
    id: str
    filename: str
    caption: Union[str, None]


class Album(BaseModel):
    id: str
    name: str
    title: str


class AlbumSearch(BaseModel):
    id: str
    name: str
    title: str


class AlbumModified(BaseModel):
    name: str
    title: str
    cover: Union[str, None]


class SearchResultsAlbum(BaseModel):
    results: List[Album]
    next_page: Union[str, None]


class SearchResultsPhoto(BaseModel):
    results: List[PhotoSearch]
    next_page: Union[str, None]


class SearchResultsVideo(BaseModel):
    results: List[VideoSearch]
    next_page: Union[str, None]


class RandomSearchResultsPhoto(BaseModel):
    results: List[PhotoSearch]


class RandomSearchResultsVideo(BaseModel):
    results: List[VideoSearch]