59 lines
1.4 KiB
Python
59 lines
1.4 KiB
Python
"""TV Show models and validation."""
|
|
from dataclasses import dataclass
|
|
from enum import Enum
|
|
from typing import Any
|
|
|
|
|
|
class ShowStatus(Enum):
|
|
"""Status of a TV show - whether it's still airing or has ended."""
|
|
ONGOING = "ongoing"
|
|
ENDED = "ended"
|
|
|
|
|
|
@dataclass
|
|
class TVShow:
|
|
"""Represents a TV show."""
|
|
imdb_id: str
|
|
title: str
|
|
seasons_count: int
|
|
status: ShowStatus # ongoing or ended
|
|
|
|
|
|
def validate_tv_shows_structure(tv_shows: Any) -> bool:
|
|
"""
|
|
Validate the structure of the tv_shows parameter.
|
|
|
|
Expected structure: list of TV show objects
|
|
[
|
|
{
|
|
"imdb_id": str,
|
|
"title": str,
|
|
"seasons_count": int,
|
|
"status": str # "ongoing" or "ended"
|
|
}
|
|
]
|
|
"""
|
|
if not isinstance(tv_shows, list):
|
|
return False
|
|
|
|
for show in tv_shows:
|
|
if not isinstance(show, dict):
|
|
return False
|
|
|
|
# Check required fields
|
|
required_fields = {"imdb_id", "title", "seasons_count", "status"}
|
|
if not all(field in show for field in required_fields):
|
|
return False
|
|
|
|
# Validate field types
|
|
if not isinstance(show["imdb_id"], str):
|
|
return False
|
|
if not isinstance(show["title"], str):
|
|
return False
|
|
if not isinstance(show["seasons_count"], int):
|
|
return False
|
|
if show["status"] not in ["ongoing", "ended"]:
|
|
return False
|
|
|
|
return True
|