diff --git a/src/PowerPlatform/Dataverse/data/odata.py b/src/PowerPlatform/Dataverse/data/odata.py index bdcff06..6766f50 100644 --- a/src/PowerPlatform/Dataverse/data/odata.py +++ b/src/PowerPlatform/Dataverse/data/odata.py @@ -445,22 +445,22 @@ def _delete(self, logical_name: str, key: str) -> None: url = f"{self.api}/{entity_set}{self._format_key(key)}" self._request("delete", url, headers={"If-Match": "*"}) - def _get(self, logical_name: str, key: str, select: Optional[str] = None) -> Dict[str, Any]: + def _get(self, logical_name: str, key: str, select: Optional[List[str]] = None) -> Dict[str, Any]: """Retrieve a single record. :param logical_name: Singular logical entity name. :type logical_name: ``str`` :param key: Record GUID (with or without parentheses) or alternate key syntax. :type key: ``str`` - :param select: Comma separated columns for ``$select`` (optional). - :type select: ``str`` | ``None`` + :param select: Columns to select; joined with commas into $select. + :type select: ``list[str]`` | ``None`` :return: Retrieved record dictionary (may be empty if no selected attributes). :rtype: ``dict[str, Any]`` """ params = {} if select: - params["$select"] = select + params["$select"] = ",".join(select) entity_set = self._entity_set_from_logical(logical_name) url = f"{self.api}/{entity_set}{self._format_key(key)}" r = self._request("get", url, params=params) diff --git a/tests/unit/data/test_logical_crud.py b/tests/unit/data/test_logical_crud.py index 78280d0..c5980ed 100644 --- a/tests/unit/data/test_logical_crud.py +++ b/tests/unit/data/test_logical_crud.py @@ -80,7 +80,7 @@ def test_single_create_update_delete_get(): entity_set = c._entity_set_from_logical("account") rid = c._create(entity_set, "account", {"name": "Acme"}) assert rid == guid - rec = c._get("account", rid, select="accountid,name") + rec = c._get("account", rid, select=["accountid", "name"]) assert rec["accountid"] == guid and rec["name"] == "Acme" c._update("account", rid, {"telephone1": "555"}) # returns None c._delete("account", rid) # returns None