Files
2026-01-13 17:14:19 -05:00

69 lines
1.8 KiB
JavaScript

const { processReminder } = require("./handler");
const { logger } = require("../shared");
/**
* Lambda handler for condition check reminder emails.
*
* Invoked by EventBridge Scheduler with a payload containing:
* - rentalId: UUID of the rental
* - checkType: Type of check (pre_rental_owner, rental_start_renter, rental_end_renter, post_rental_owner)
* - scheduleName: Name of the schedule (for cleanup after execution)
*
* @param {Object} event - EventBridge Scheduler event
* @returns {Promise<Object>} Result of the reminder processing
*/
exports.handler = async (event) => {
logger.info("Lambda invoked", { event });
// Extract payload - EventBridge Scheduler sends it directly
const { rentalId, checkType, scheduleName } = event;
// Validate required fields
if (!rentalId) {
logger.error("Missing rentalId in event payload");
return {
statusCode: 400,
body: JSON.stringify({ error: "Missing rentalId" }),
};
}
if (!checkType) {
logger.error("Missing checkType in event payload");
return {
statusCode: 400,
body: JSON.stringify({ error: "Missing checkType" }),
};
}
// Validate checkType
const validCheckTypes = [
"pre_rental_owner",
"rental_start_renter",
"rental_end_renter",
"post_rental_owner",
];
if (!validCheckTypes.includes(checkType)) {
logger.error("Invalid checkType", { checkType, validCheckTypes });
return {
statusCode: 400,
body: JSON.stringify({ error: "Invalid checkType" }),
};
}
// Process the reminder
const result = await processReminder(rentalId, checkType, scheduleName);
if (result.success) {
return {
statusCode: 200,
body: JSON.stringify(result),
};
} else {
return {
statusCode: 500,
body: JSON.stringify(result),
};
}
};