catalogs.py•1.48 kB
"""Catalog-related OCC client mixin."""
from __future__ import annotations
from app.models import JsonObject
from app.settings import settings
from app.utils import coalesce_fields
from .base import SupportsOccHttp
class CatalogsMixin:
async def get_catalogs(
self: SupportsOccHttp, base_site_id: str, fields: str | None = None
) -> JsonObject:
"""List catalogs associated with a base site."""
params = {"fields": coalesce_fields(fields, settings.occ_default_fields)}
path = f"/{base_site_id}/catalogs"
return await self.get_json(path, params=params)
async def get_catalog(
self: SupportsOccHttp,
base_site_id: str,
catalog_id: str,
fields: str | None = None,
) -> JsonObject:
"""Retrieve details for a specific catalog."""
params = {"fields": coalesce_fields(fields, settings.occ_default_fields)}
path = f"/{base_site_id}/catalogs/{catalog_id}"
return await self.get_json(path, params=params)
async def get_catalog_version(
self: SupportsOccHttp,
base_site_id: str,
catalog_id: str,
version_id: str,
fields: str | None = None,
) -> JsonObject:
"""Retrieve a specific catalog version."""
params = {"fields": coalesce_fields(fields, settings.occ_default_fields)}
path = f"/{base_site_id}/catalogs/{catalog_id}/{version_id}"
return await self.get_json(path, params=params)