Skip to content

Commit 458983c

Browse files
authored
Merge pull request #4 from silvanheller/feature/exists
Convenience not_exists_ok additions to truncate and drop
2 parents 77e7630 + a5c34f4 commit 458983c

File tree

3 files changed

+15
-4
lines changed

3 files changed

+15
-4
lines changed

cottontaildb_client/cottontaildb_client.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -117,15 +117,19 @@ def create_entity(self, schema, entity, columns, exist_ok=False):
117117
response = self._ddl.CreateEntity(CreateEntityMessage(txId=self._tid, definition=entity_def))
118118
return self._parse_query_response(response)
119119

120-
def drop_entity(self, schema, entity):
120+
def drop_entity(self, schema, entity, not_exist_ok=True):
121121
"""Drops the given entity from the given schema."""
122+
if not_exist_ok and entity not in [s.split('.')[-1] for s in self.list_entities(schema)]:
123+
return
122124
schema_name = SchemaName(name=schema)
123125
entity_name = EntityName(schema=schema_name, name=entity)
124126
response = self._ddl.DropEntity(DropEntityMessage(txId=self._tid, entity=entity_name))
125127
return self._parse_query_response(response)
126128

127-
def truncate_entity(self, schema, entity):
129+
def truncate_entity(self, schema, entity, not_exist_ok=True):
128130
"""Truncates the specified entity."""
131+
if not_exist_ok and entity not in [s.split('.')[-1] for s in self.list_entities(schema)]:
132+
return
129133
schema_name = SchemaName(name=schema)
130134
entity_name = EntityName(schema=schema_name, name=entity)
131135
response = self._ddl.TruncateEntity(TruncateEntityMessage(txId=self._tid, entity=entity_name))

setup.cfg

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[metadata]
22
name = cottontaildb-client
3-
version = 0.0.3
3+
version = 0.0.4
44
author = Florian Spiess
55
author_email = [email protected]
66
description = A Cottontail DB gRPC client.

tests/test_cottontaildb_client.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,14 +49,21 @@ def test_create_drop_entity(self):
4949
self.client.drop_entity(TEST_SCHEMA, TEST_ENTITY)
5050
self.assert_not_in(TEST_ENTITY, self.client.list_entities(TEST_SCHEMA), 'entity was not dropped')
5151

52+
def test_drop_not_exists_entity(self):
53+
self._create_schema()
54+
self.client.drop_entity(TEST_SCHEMA, TEST_ENTITY)
55+
56+
def test_truncate_not_exists_entity(self):
57+
self._create_schema()
58+
self.client.truncate_entity(TEST_SCHEMA, TEST_ENTITY)
59+
5260
def test_create_truncate_entity(self):
5361
self._create_schema()
5462
self._create_entity()
5563
self.assert_in(TEST_ENTITY, self.client.list_entities(TEST_SCHEMA), 'entity was not created')
5664
self.client.truncate_entity(TEST_SCHEMA, TEST_ENTITY)
5765
self.assert_in(TEST_ENTITY, self.client.list_entities(TEST_SCHEMA), 'entity was dropped')
5866

59-
6067
def test_insert(self):
6168
self._create_schema()
6269
self._create_entity()

0 commit comments

Comments
 (0)