in src/backend/booking/src/confirm-booking/confirm.py [0:0]
def confirm_booking(booking_id):
"""Update existing booking to CONFIRMED and generates a Booking reference
Parameters
----------
booking_id : string
Unique Booking ID
Returns
-------
dict
bookingReference: string
Raises
------
BookingConfirmationException
Booking Confirmation Exception including error message upon failure
"""
try:
reference = secrets.token_urlsafe(4)
logger.debug(
{
"operation": "booking_confirmation",
"details": {"booking_id": booking_id, "booking_reference": reference},
}
)
ret = table.update_item(
Key={"id": booking_id},
ConditionExpression="id = :idVal",
UpdateExpression="SET bookingReference = :br, #STATUS = :confirmed",
ExpressionAttributeNames={"#STATUS": "status"},
ExpressionAttributeValues={
":br": reference,
":idVal": booking_id,
":confirmed": "CONFIRMED",
},
ReturnValues="UPDATED_NEW",
)
logger.info({"operation": "booking_confirmation", "details": ret})
tracer.put_metadata(booking_id, ret)
return {"bookingReference": reference}
except ClientError as err:
logger.exception({"operation": "booking_confirmation"})
raise BookingConfirmationException(details=err)