Source code for veupath_chatbot.services.catalog.sites
"""Sites and record types catalog functions."""
from veupath_chatbot.integrations.veupathdb.discovery import get_discovery_service
from veupath_chatbot.integrations.veupathdb.factory import list_sites as list_wdk_sites
from veupath_chatbot.integrations.veupathdb.param_utils import wdk_entity_name
from veupath_chatbot.platform.types import JSONArray
[docs]
async def list_sites() -> JSONArray:
"""List all available VEuPathDB sites."""
return [site.to_dict() for site in list_wdk_sites()]
[docs]
async def get_record_types(site_id: str) -> JSONArray:
"""Get record types for a specific site."""
discovery = get_discovery_service()
record_types = await discovery.get_record_types(site_id)
result: JSONArray = []
for rt in record_types:
if not isinstance(rt, dict):
continue
display_name_raw = rt.get("displayName")
display_name = display_name_raw if isinstance(display_name_raw, str) else None
description_raw = rt.get("description")
description = description_raw if isinstance(description_raw, str) else ""
result.append(
{
"name": wdk_entity_name(rt),
"displayName": display_name,
"description": description,
}
)
return result