Skip to content

Commit 0366a1e

Browse files
authored
Adding support for /key-generators (#375)
1 parent 3dfbe25 commit 0366a1e

File tree

3 files changed

+29
-0
lines changed

3 files changed

+29
-0
lines changed

arango/database.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
AsyncJobListError,
2828
CollectionCreateError,
2929
CollectionDeleteError,
30+
CollectionKeyGeneratorsError,
3031
CollectionListError,
3132
DatabaseCompactError,
3233
DatabaseCreateError,
@@ -1623,6 +1624,23 @@ def response_handler(resp: Response) -> bool:
16231624

16241625
return self._execute(request, response_handler)
16251626

1627+
def key_generators(self) -> Result[List[str]]:
1628+
"""Returns the available key generators for collections.
1629+
1630+
:return: List of available key generators.
1631+
:rtype: [str]
1632+
:raise arango.exceptions.CollectionKeyGeneratorsError: If retrieval fails.
1633+
""" # noqa: E501
1634+
request = Request(method="get", endpoint="/_api/key-generators")
1635+
1636+
def response_handler(resp: Response) -> List[str]:
1637+
if not resp.is_success:
1638+
raise CollectionKeyGeneratorsError(resp, request)
1639+
result: List[str] = resp.body["keyGenerators"]
1640+
return result
1641+
1642+
return self._execute(request, response_handler)
1643+
16261644
####################
16271645
# Graph Management #
16281646
####################

arango/exceptions.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -298,6 +298,10 @@ class CollectionTruncateError(ArangoServerError):
298298
"""Failed to truncate collection."""
299299

300300

301+
class CollectionKeyGeneratorsError(ArangoServerError):
302+
"""Failed to retrieve key generators."""
303+
304+
301305
class CollectionLoadError(ArangoServerError):
302306
"""Failed to load collection."""
303307

tests/test_database.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
USE_SYSTEM_DATABASE,
1414
)
1515
from arango.exceptions import (
16+
CollectionKeyGeneratorsError,
1617
DatabaseCompactError,
1718
DatabaseCreateError,
1819
DatabaseDeleteError,
@@ -348,6 +349,12 @@ def test_database_misc_methods(client, sys_db, db, bad_db, cluster, secret, db_v
348349
result = db_superuser.compact()
349350
assert result == {}
350351

352+
if db_version >= version.parse("3.12.0"):
353+
key_generators = db.key_generators()
354+
assert isinstance(key_generators, list)
355+
with pytest.raises(CollectionKeyGeneratorsError):
356+
bad_db.key_generators()
357+
351358

352359
def test_database_management(db, sys_db, bad_db):
353360
# Test list databases

0 commit comments

Comments
 (0)