in Labs/amazon-rds-purpose-built-workshop/src/ddb-stream-processor/lambda_function.py [0:0]
def getTripCompletionRecords(ddbRecords):
completedTripList = []
for record in ddbRecords:
if (record['eventName'] == "MODIFY"): #The ride completion event is always an update an existed item for the ride entry
newInfo = record["dynamodb"]["NewImage"]
print(newInfo)
if('STATUS' in newInfo and newInfo['STATUS']['S'] == "Completed"):
completedtripInfo = {
"rider_mobile": "" if 'RIDER_MOBILE' not in newInfo else newInfo['RIDER_MOBILE']['S'],
"pickup_datetime": "" if 'PICKUP_DATETIME' not in newInfo else datetime.strptime(newInfo['PICKUP_DATETIME']['S'], "%Y-%m-%dT%H:%M:%S%z").strftime('%Y-%m-%d %H:%M:%S'),
"rider_name": "" if 'RIDER_NAME' not in newInfo else newInfo['RIDER_NAME']['S'],
"vendor_id": "" if 'VENDOR_ID' not in newInfo else newInfo['VENDOR_ID']['N'],
"pickup_longitude": "" if 'PICKUP_LONGITUDE' not in newInfo else newInfo['PICKUP_LONGITUDE']['N'],
"trip_type": "" if 'TRIP_TYPE' not in newInfo else newInfo['TRIP_TYPE']['N'],
"store_and_fwd_flag": "" if 'STORE_AND_FWD_FLAG' not in newInfo else newInfo['STORE_AND_FWD_FLAG']['S'],
"dropoff_latitude": "" if 'DROPOFF_LATITUDE' not in newInfo else newInfo['DROPOFF_LATITUDE']['N'],
"rate_code_id": "" if 'RATE_CODE_ID' not in newInfo else newInfo['RATE_CODE_ID']['N'],
"tolls_amount": "" if 'TOLLS_AMOUNT' not in newInfo else newInfo['TOLLS_AMOUNT']['N'],
"improvement_surcharge": "" if 'IMPROVEMENT_SURCHARGE' not in newInfo else newInfo['IMPROVEMENT_SURCHARGE']['N'],
"tip_amount": "" if 'TIP_AMOUNT' not in newInfo else newInfo['TIP_AMOUNT']['N'],
"dropoff_datetime": "" if 'DROPOFF_DATETIME' not in newInfo else datetime.strptime(newInfo['DROPOFF_DATETIME']['S'], "%Y-%m-%dT%H:%M:%S%z").strftime('%Y-%m-%d %H:%M:%S'),
"cab_type_id": "" if 'CAB_TYPE_ID' not in newInfo else newInfo['CAB_TYPE_ID']['N'],
"driver_name": "" if 'DRIVER_NAME' not in newInfo else newInfo['DRIVER_NAME']['S'],
"pickup_latitude": "" if 'PICKUP_LATITUDE' not in newInfo else newInfo['PICKUP_LATITUDE']['N'],
"trip_distance": "" if 'TRIP_DISTANCE' not in newInfo else newInfo['TRIP_DISTANCE']['N'],
"vehicle_id": "" if 'VEHICLE_ID' not in newInfo else newInfo['VEHICLE_ID']['S'],
"total_amount": "" if 'TOTAL_AMOUNT' not in newInfo else newInfo['TOTAL_AMOUNT']['N'],
"mta_tax": "" if 'MTA_TAX' not in newInfo else newInfo['MTA_TAX']['N'],
"dropoff_longitude": "" if 'DROPOFF_LONGITUDE' not in newInfo else newInfo['DROPOFF_LONGITUDE']['N'],
"payment_type": "" if 'PAYMENT_TYPET' not in newInfo else newInfo['PAYMENT_TYPET']['N'],
"driver_id": "" if 'DRIVER_ID' not in newInfo else newInfo['DRIVER_ID']['N'],
"driver_email": "" if 'DRIVER_EMAIL' not in newInfo else newInfo['DRIVER_EMAIL']['S'],
"trip_Info": "" if 'tripinfo' not in newInfo else newInfo['tripinfo']['S'],
"riderId": "" if 'RIDER_ID' not in newInfo else newInfo['RIDER_ID']['N'],
"extra": "" if 'EXTRA' not in newInfo else newInfo['EXTRA']['N'],
"fare_amount": "" if 'FARE_AMOUNT' not in newInfo else newInfo['FARE_AMOUNT']['N'],
"passenger_count": "" if 'PASSENGER_COUNT' not in newInfo else newInfo['PASSENGER_COUNT']['N'],
"rider_email": "" if 'RIDER_EMAIL' not in newInfo else newInfo['RIDER_EMAIL']['S'],
"driver_mobile": "" if 'DRIVER_MOBILE' not in newInfo else newInfo['DRIVER_MOBILE']['S'],
"status": "Completed"
}
# "<>": "" if 'driverid' not in newInfo else newInfo['driverid']['S'],
# "<>": "" if 'DriverDetails' not in newInfo else newInfo['DriverDetails']['S'],
# "<>": "" if 'Vehicle Details' not in newInfo else newInfo['Vehicle Details']['S'],
# "<>": "" if 'ID' not in newInfo else newInfo['ID']['S'],
print("Completed Trip Informaiton = " + json.dumps(completedtripInfo, indent = 2))
completedTripList.append(completedtripInfo)
return completedTripList