in code/lambda_layer/metadata-services/python/datastore.py [0:0]
def queryDocumentId(self, targetBucketName, targetFileName, versionId=None):
ret = None
res = None
dynamodb = AwsHelper().getResource("dynamodb")
table = dynamodb.Table(self._lineageTableName)
documentSignature = "BUCKET:{}@FILE:{}".format(targetBucketName, targetFileName)
if versionId:
documentSignature += "@VERSION:{}".format(versionId)
try:
res = table.query(
KeyConditionExpression = Key('documentSignature').eq(documentSignature),
IndexName = self._lineageIndexName
)
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': 'Unknown error occurred during querying the document Id',
'Status': 400
}
try:
items = res['Items']
print(items)
if len(items) == 0:
ret = {
'Status': 404,
'documentId': None
}
else:
items.sort(key=lambda item: datetime.fromisoformat(item['timestamp']))
ret = {
'Status': 200,
'documentId': items[0]['documentId']
}
except Exception as e:
print(e)
ret = {
'Error': 'Could not find the documentId for specified document Signature',
'Status': 400
}
return ret