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)}