def updateDocumentStatus()

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