From c4f57ad5f2ac9ebca4a055a03596f06e9c165516 Mon Sep 17 00:00:00 2001 From: Alexey Timin Date: Wed, 2 Oct 2024 11:25:17 +0200 Subject: [PATCH] RS-318: Add Bucket.rename_entry method (#117) * add Bucket.rename_entry method * update CHANGELOG --- CHANGELOG.md | 1 + reduct/bucket.py | 13 +++++++++++++ tests/bucket_test.py | 9 +++++++++ 3 files changed, 23 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 016b639..c104bda 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - RS-418: `Bucket.remove_record`, `Bucket.remove_batch` and `Bucket.remove_query` to remove records, [PR-114](https://github.com/reductstore/reduct-py/pull/114) - RS-389: QuotaType.HARD, [PR-115](https://github.com/reductstore/reduct-py/pulls/115) +- RS-318: Add `Bucket.rename_entry` method, [PR-117](https://github.com/reductstore/reduct-py/pull/117) ## [1.11.0] - 2024-08-19 diff --git a/reduct/bucket.py b/reduct/bucket.py index 55b162e..06cf194 100644 --- a/reduct/bucket.py +++ b/reduct/bucket.py @@ -247,6 +247,19 @@ async def remove_query( return json.loads(resp)["removed_records"] + async def rename_entry(self, old_name: str, new_name: str): + """ + Rename entry + Args: + old_name: old name of entry + new_name: new name of entry + Raises: + ReductError: if there is an HTTP error + """ + await self._http.request_all( + "PUT", f"/b/{self.name}/{old_name}/rename", json={"new_name": new_name} + ) + @asynccontextmanager async def read( self, diff --git a/tests/bucket_test.py b/tests/bucket_test.py index dbcbcac..8885c70 100644 --- a/tests/bucket_test.py +++ b/tests/bucket_test.py @@ -584,3 +584,12 @@ async def test_remove_query(bucket_1): records = [record async for record in bucket_1.query("entry-2")] assert len(records) == 1 assert records[0].timestamp == 5000000 + + +@pytest.mark.asyncio +@requires_api("1.12") +async def test_rename_entry(bucket_1): + """Should rename an entry""" + await bucket_1.rename_entry("entry-2", "new-entry") + entries = await bucket_1.get_entry_list() + assert entries[1].name == "new-entry"