Skip to content

Commit 173ae49

Browse files
committed
Added support for /key-generators
1 parent ef0eca1 commit 173ae49

File tree

3 files changed

+35
-0
lines changed

3 files changed

+35
-0
lines changed

arangoasync/database.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
AsyncJobListError,
2323
CollectionCreateError,
2424
CollectionDeleteError,
25+
CollectionKeyGeneratorsError,
2526
CollectionListError,
2627
DatabaseCreateError,
2728
DatabaseDeleteError,
@@ -695,6 +696,29 @@ def response_handler(resp: Response) -> bool:
695696

696697
return await self._executor.execute(request, response_handler)
697698

699+
async def key_generators(self) -> Result[List[str]]:
700+
"""Returns the available key generators for collections.
701+
702+
Returns:
703+
list: List of available key generators.
704+
705+
Raises:
706+
CollectionKeyGeneratorsError: If retrieval fails.
707+
708+
References:
709+
- `get-the-available-key-generators <https://docs.arangodb.com/stable/develop/http-api/collections/#get-the-available-key-generators>`__
710+
""" # noqa: E501
711+
request = Request(method=Method.GET, endpoint="/_api/key-generators")
712+
713+
def response_handler(resp: Response) -> List[str]:
714+
if not resp.is_success:
715+
raise CollectionKeyGeneratorsError(resp, request)
716+
return cast(
717+
List[str], self.deserializer.loads(resp.raw_body)["keyGenerators"]
718+
)
719+
720+
return await self._executor.execute(request, response_handler)
721+
698722
async def has_document(
699723
self,
700724
document: str | Json,

arangoasync/exceptions.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -191,6 +191,10 @@ class CollectionDeleteError(ArangoServerError):
191191
"""Failed to delete collection."""
192192

193193

194+
class CollectionKeyGeneratorsError(ArangoServerError):
195+
"""Failed to retrieve key generators."""
196+
197+
194198
class CollectionListError(ArangoServerError):
195199
"""Failed to retrieve collections."""
196200

tests/test_database.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
from arangoasync.exceptions import (
77
CollectionCreateError,
88
CollectionDeleteError,
9+
CollectionKeyGeneratorsError,
910
CollectionListError,
1011
DatabaseCreateError,
1112
DatabaseDeleteError,
@@ -55,6 +56,12 @@ async def test_database_misc_methods(sys_db, db, bad_db, cluster):
5556
with pytest.raises(ServerVersionError):
5657
await bad_db.version()
5758

59+
# key generators
60+
key_generators = await db.key_generators()
61+
assert isinstance(key_generators, list)
62+
with pytest.raises(CollectionKeyGeneratorsError):
63+
await bad_db.key_generators()
64+
5865

5966
@pytest.mark.asyncio
6067
async def test_create_drop_database(

0 commit comments

Comments
 (0)