from datetime import date as DateType from pydantic import BaseModel, field_validator from services.path import encode_path class ChannelItem(BaseModel): id: int name: str videos_count: int class ChannelsOut(BaseModel): channels: list[ChannelItem] class VideoItem(BaseModel): id: int title: str path: str preview_path: str date: DateType | None = None @field_validator("path", "preview_path", mode="before") @classmethod def encode_urls(cls, v): return encode_path(v) class PlaylistItem(BaseModel): id: int name: str preview_path: str class ChannelOut(BaseModel): videos: list[VideoItem] playlists: list[PlaylistItem] channel_name: str videos_count: int | None = None playlists_count: int | None = None