Shipping lambda - sastry-25/unboard GitHub Wiki

import json
import pymysql
import pymysql.cursors
import os
import datetime

DB_HOST = os.environ["DB_HOST"]
DB_USER = os.environ["DB_USER"]
DB_PASSWORD = os.environ["DB_PASSWORD"]
DB_SCHEMA = os.environ["DB_SCHEMA"]

SQL_INSERT_SHIPPING = """
INSERT INTO SHIPPING (
    ORDER_ID,
    ADDRESS1,
    ADDRESS2,
    CITY,
    STATE,
    COUNTRY,
    POSTAL_CODE,
    PACKETS,
    WEIGHT_EACH,
    CREATED_AT
) VALUES (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)
"""

def lambda_handler(event, context):
    try:
        print("EVENT RECEIVED:", json.dumps(event))  # <-- IMPORTANT

        detail = event.get("detail")
        if not detail:
            print("ERROR: No detail field in EventBridge event")
            return {"error": "No detail field — event ignored"}

        order_id = detail.get("orderId")
        packets = detail.get("packets", 0)
        weight_each = detail.get("weightEach", 0.0)

        address = detail.get("address", {})
        address1 = address.get("address1", "")
        address2 = address.get("address2", "")
        city = address.get("city", "")
        state = address.get("state", "")
        country = address.get("country", "")
        postal_code = address.get("postalCode", "")

        if not order_id:
            print("ERROR: Missing orderId in detail")
            return {"error": "Missing orderId — event ignored"}

        conn = pymysql.connect(
            host=DB_HOST,
            user=DB_USER,
            password=DB_PASSWORD,
            db=DB_SCHEMA,
            cursorclass=pymysql.cursors.DictCursor,
            autocommit=True,
        )

        with conn.cursor() as cursor:
            cursor.execute(
                SQL_INSERT_SHIPPING,
                (
                    order_id,
                    address1,
                    address2,
                    city,
                    state,
                    country,
                    postal_code,
                    packets,
                    weight_each,
                    datetime.datetime.utcnow(),
                ),
            )

        print(f"SUCCESS: Shipping inserted for order {order_id}")

        return {
            "status": "OK",
            "orderId": order_id,
            "packets": packets,
            "weightEach": weight_each,
        }

    except Exception as e:
        print(f"ERROR: {e}")
        return {"error": str(e)}