From bbc4920c4c1af5a030d3930ab9cc88e4ff467ec1 Mon Sep 17 00:00:00 2001 From: Emil Lerch Date: Wed, 25 Nov 2020 12:07:12 -0800 Subject: [PATCH] add automatic table creation --- etags.py | 26 +++++++++++++++++++------- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/etags.py b/etags.py index 43ee910..96a3a65 100755 --- a/etags.py +++ b/etags.py @@ -28,13 +28,25 @@ def ddb_url(url): def all_etags(urls): - response = ddb.batch_get_item(RequestItems={table: { - 'Keys': [ddb_url(url) for url in urls], - }}) - rc = {} - for item in response['Responses'][table]: - rc[item['PK']['S']] = item['etag']['S'] - return rc + try: + response = ddb.batch_get_item(RequestItems={table: { + 'Keys': [ddb_url(url) for url in urls], + }}) + rc = {} + for item in response['Responses'][table]: + if 'etag' in item: + rc[item['PK']['S']] = item['etag']['S'] + return rc + except Exception as ex: + printerr("Exception getting items: %s. Creating table", ex) + response = ddb.create_table( + TableName = table, + AttributeDefinitions = [ + { 'AttributeName': 'PK', 'AttributeType': 'S' } + ], + KeySchema = [ { 'AttributeName': 'PK', 'KeyType': 'HASH' } ], + ) + return all_etags(urls) def create_put_request(item):