From a7a11179cdad8caa36da25c1a6fd8f82324b1aba Mon Sep 17 00:00:00 2001 From: Andrew Date: Mon, 17 Mar 2025 23:15:59 +0000 Subject: [PATCH] [server]: Add return_all_coordinates --- .../return_all_coordinates/lambda_function.py | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 server/src/functions/return_all_coordinates/lambda_function.py diff --git a/server/src/functions/return_all_coordinates/lambda_function.py b/server/src/functions/return_all_coordinates/lambda_function.py new file mode 100644 index 0000000..19bdcdb --- /dev/null +++ b/server/src/functions/return_all_coordinates/lambda_function.py @@ -0,0 +1,37 @@ +import json +import os +import boto3 + +os.environ.setdefault('AWS_DEFAULT_REGION', 'us-east-1') +dynamodb = boto3.resource('dynamodb') + + +def lambda_handler(event, context): + table = dynamodb.Table(os.environ['TABLE_NAME']) + + try: + # Scan entire table and only extract latitude and longitude + coordinates = [] + response = table.scan() + + for item in response.get('Items', []): + if 'latitude' in item and 'longitude' in item: + coordinates.append([item['latitude'], item['longitude']]) + + # Handle pagination + while 'LastEvaluatedKey' in response: + response = table.scan(ExclusiveStartKey=response['LastEvaluatedKey']) + for item in response.get('Items', []): + if 'latitude' in item and 'longitude' in item: + coordinates.append([item['latitude'], item['longitude']]) + + return { + 'statusCode': 200, + 'body': json.dumps({'coordinates': coordinates}) + } + + except Exception as e: + return { + 'statusCode': 500, + 'body': json.dumps({'error': str(e)}) + }