in code/lambda_layer/metadata-services/python/datastore.py [0:0]
def updateDocumentStatus(self, documentId, status, stage, timestamp, message=None):
ret = None
dynamodb = AwsHelper().getResource("dynamodb")
table = dynamodb.Table(self._opsTableName)
try:
if message:
new_datapoint = {
"timestamp": timestamp,
"stage": stage,
"status": status,
"message": message
}
else:
new_datapoint = {
"timestamp": timestamp,
"stage": stage,
"status": status
}
table.update_item(
Key = {
'documentId': documentId
},
UpdateExpression = 'SET documentStatus = :documentStatus, documentStage = :documentStage, lastUpdate = :lastUpdate, timeline = list_append(timeline, :new_datapoint)',
ConditionExpression = 'attribute_exists(documentId)',
ExpressionAttributeValues = {
':documentStatus': status,
':documentStage': stage,
':lastUpdate': timestamp,
':new_datapoint': [new_datapoint]
}
)
ret = {
'Status': 200
}
except ClientError as e:
print(e)
ret = {
'Error' : e.response['Error']['Message'],
'Status': e.response['ResponseMetadata']['HTTPStatusCode']
}
except Exception as e:
print(e)
ret = {
'Error' : 'Updating document failed',
'Status': 400
}
return ret