Skip to content

Commit b0ea364

Browse files
authored
Merge pull request #82 from keboola/fix-tables-metadata
Fix tables metadata
2 parents e30f83a + d5150d0 commit b0ea364

2 files changed

Lines changed: 19 additions & 4 deletions

File tree

kbcstorage/tables_metadata.py

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ def delete(self, table_id, metadata_id):
6666

6767
self._delete(url)
6868

69-
def create(self, table_id, provider, metadata, columns_metadata):
69+
def create(self, table_id, provider, metadata, columns_metadata=None):
7070
"""
7171
Post metadata to a table.
7272
@@ -86,13 +86,15 @@ def create(self, table_id, provider, metadata, columns_metadata):
8686
ValueError: If the metadata is not a list.
8787
ValueError: If the columns_metadata is not a list
8888
"""
89+
if columns_metadata is None:
90+
columns_metadata = []
8991
if not isinstance(table_id, str) or table_id == '':
9092
raise ValueError("Invalid table_id '{}'.".format(table_id))
9193
if not isinstance(provider, str) or provider == '':
9294
raise ValueError("Invalid provider '{}'.".format(provider))
9395
if not isinstance(metadata, list):
9496
raise ValueError("Invalid metadata '{}'.".format(metadata))
95-
if not isinstance(columns_metadata, list):
97+
if columns_metadata is not None and not isinstance(columns_metadata, list):
9698
raise ValueError("Invalid columns_metadata '{}'.".format(columns_metadata))
9799

98100
url = '{}/{}/metadata'.format(self.base_url, table_id)
@@ -101,7 +103,8 @@ def create(self, table_id, provider, metadata, columns_metadata):
101103
}
102104
data = {
103105
"provider": provider,
104-
"metadata": metadata,
105-
"columnsMetadata": columns_metadata
106+
"metadata": metadata
106107
}
108+
if columns_metadata:
109+
data["columnsMetadata"] = columns_metadata
107110
return self._post(url, data=json.dumps(data), headers=headers)

tests/functional/test_tables.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -358,6 +358,18 @@ def test_table_with_metadata(self):
358358
]
359359
)
360360

361+
with self.subTest("Test empty columns metadata"):
362+
# test that empty [] is not actually put in the request
363+
self.tables.metadata.create(
364+
table_id=table_id,
365+
provider='test',
366+
metadata=[{
367+
'key': 'test_table_with_metadata',
368+
'value': 'success'
369+
}],
370+
columns_metadata=[]
371+
)
372+
361373
table_info = self.tables.detail(table_id)
362374
with self.subTest("Test metadata key in response"):
363375
self.assertIn('metadata', table_info)

0 commit comments

Comments
 (0)