from typing import Any, Sequence, TypeVar

from pydantic import BaseModel

SchemaT = TypeVar("SchemaT", bound=BaseModel)


def dump(schema: type[SchemaT], obj: Any) -> dict[str, Any]:
    return schema.model_validate(obj).model_dump(mode="json")


def dump_list(schema: type[SchemaT], objs: Sequence[Any]) -> list[dict[str, Any]]:
    return [dump(schema, obj) for obj in objs]
