diff --git a/arango/database.py b/arango/database.py index 875a04e0..b958d9fd 100644 --- a/arango/database.py +++ b/arango/database.py @@ -2132,9 +2132,9 @@ def response_handler(resp: Response) -> Jsons: return self._execute(request, response_handler) def view(self, name: str) -> Result[Json]: - """Return view details. + """Return the properties of a View. - :return: View details. + :return: The View properties. :rtype: dict :raise arango.exceptions.ViewGetError: If retrieval fails. """ @@ -2147,6 +2147,22 @@ def response_handler(resp: Response) -> Json: return self._execute(request, response_handler) + def view_info(self, name: str) -> Result[Json]: + """Return the id, name and type of a View. + + :return: Some View information. + :rtype: dict + :raise arango.exceptions.ViewGetError: If retrieval fails. + """ + request = Request(method="get", endpoint=f"/_api/view/{name}") + + def response_handler(resp: Response) -> Json: + if resp.is_success: + return format_view(resp.body) + raise ViewGetError(resp, request) + + return self._execute(request, response_handler) + def create_view( self, name: str, view_type: str, properties: Optional[Json] = None ) -> Result[Json]: diff --git a/tests/test_view.py b/tests/test_view.py index 08c4f959..fd8a5640 100644 --- a/tests/test_view.py +++ b/tests/test_view.py @@ -49,18 +49,28 @@ def test_view_management(db, bad_db, col, cluster): bad_db.views() assert err.value.error_code in {11, 1228} - # Test get view + # Test get view (properties) view = db.view(view_name) assert view["id"] == view_id assert view["name"] == view_name assert view["type"] == view_type assert view["consolidation_interval_msec"] == 50000 + # Test get view (info) + view_info = db.view_info(view_name) + assert view_info["id"] == view_id + assert view_info["name"] == view_name + assert view_info["type"] == view_type + # Test get missing view with assert_raises(ViewGetError) as err: db.view(bad_view_name) assert err.value.error_code == 1203 + with assert_raises(ViewGetError) as err: + db.view_info(bad_view_name) + assert err.value.error_code == 1203 + # Test update view view = db.update_view(view_name, {"consolidationIntervalMsec": 70000}) assert view["id"] == view_id