defmodule Chimeway do @moduledoc """ Public entrypoint for notification triggering. """ alias Chimeway.Inbox alias Chimeway.Deliveries alias Chimeway.Rendering.Preview alias Chimeway.Trigger @doc """ Triggers a notifier execution with explicit runtime options. """ def trigger(notifier, params, opts \\ []) do Trigger.trigger(notifier, params, opts) end @doc """ Previews a single channel rendering without persisting rows or dispatching traffic. """ def preview_rendering(notifier, params, opts \\ []) do Preview.preview(notifier, params, opts) end @doc """ Recovers a persisted event whose notifications exist but dispatch never planned deliveries. """ def recover_event(event_id, opts \\ []) do Deliveries.recover_event(event_id, opts) end @doc """ Recovers a persisted delivery by re-driving the canonical row through the configured dispatcher. """ def recover_delivery(delivery_id, opts \\ []) do Deliveries.recover_delivery(delivery_id, opts) end @doc """ Lists notifications for a recipient, newest first. """ def list_for_recipient(recipient_identity, opts \\ []) do Inbox.list_for_recipient(recipient_identity, opts) end @doc """ Marks a notification as seen for a specific recipient. """ def mark_seen(notification_id, recipient_identity, at \\ DateTime.utc_now()) do Inbox.mark_seen(notification_id, recipient_identity, at) end @doc """ Marks a notification as read for a specific recipient. """ def mark_read(notification_id, recipient_identity, at \\ DateTime.utc_now()) do Inbox.mark_read(notification_id, recipient_identity, at) end @doc """ Archives a notification for a specific recipient. """ def archive(notification_id, recipient_identity, at \\ DateTime.utc_now()) do Inbox.archive(notification_id, recipient_identity, at) end end