"""This module contains common schemas and common functions for schema validation."""

from pydantic import BaseModel, validator


def is_valid_id(id: int) -> bool:
    """Checks whether the specified id is a valid ID.

    Performs a shallow check on whether the ID is a valid primary key.
    """

    if not isinstance(id, int):
        raise TypeError(f"Expected an integer but got: {type(id)}")

    return id > 0


class ItemCount(BaseModel):
    """A schema used to represent an item count."""

    total: int

    @validator('total')
    def assert_total_is_valid(cls, total):
        if total < 0:
            raise ValueError("An item count cannot be negative.")
        return total
