stores.py•1.73 kB
"""Store endpoints for the OCC client."""
from __future__ import annotations
from app.models import JsonObject
from app.settings import settings
from app.utils import clean_params, coalesce_fields
from .base import SupportsOccHttp
class StoresMixin:
async def get_stores(
self: SupportsOccHttp,
base_site_id: str,
*,
query: str | None = None,
latitude: float | None = None,
longitude: float | None = None,
radius: float | None = None,
accuracy: float | None = None,
current_page: int = 0,
page_size: int = 20,
sort: str | None = None,
fields: str | None = None,
) -> JsonObject:
"""Search for store locations associated with a base site."""
params = clean_params(
{
"fields": coalesce_fields(fields, settings.occ_default_fields),
"query": query,
"latitude": latitude,
"longitude": longitude,
"radius": radius,
"accuracy": accuracy,
"currentPage": current_page,
"pageSize": page_size,
"sort": sort,
}
)
path = f"/{base_site_id}/stores"
return await self.get_json(path, params=params)
async def get_store(
self: SupportsOccHttp,
base_site_id: str,
base_store_uid: str,
*,
fields: str | None = None,
) -> JsonObject:
"""Fetch details for a specific base store."""
params = {"fields": coalesce_fields(fields, settings.occ_default_fields)}
path = f"/{base_site_id}/basestores/{base_store_uid}"
return await self.get_json(path, params=params)