from aws_lambda_powertools import Logger
from aws_lambda_powertools.utilities.data_classes import CloudWatchDashboardCustomWidgetEvent, event_source

logger = Logger()


@event_source(data_class=CloudWatchDashboardCustomWidgetEvent)
def lambda_handler(event: CloudWatchDashboardCustomWidgetEvent, context):
    if event.widget_context is None:
        logger.warning("No widget context provided")
        return {"title": "Error", "markdown": "Widget context is missing"}

    logger.info(f"Processing custom widget for dashboard: {event.widget_context.dashboard_name}")

    # Access specific event properties
    widget_id = event.widget_context.widget_id
    time_range = event.widget_context.time_range

    if time_range is None:
        logger.warning("No time range provided")
        return {"title": f"Custom Widget {widget_id}", "markdown": "Time range is missing"}

    # Your custom widget logic here
    return {
        "title": f"Custom Widget {widget_id}",
        "markdown": f"""
        Dashboard: {event.widget_context.dashboard_name}
        Time Range: {time_range.start} to {time_range.end}
        Theme: {event.widget_context.theme or "default"}
        """,
    }