LemonCore. Events. CronRunCompleted
(lemon_core v0.1.0)
View Source
A cron job (or timer heartbeat) finished, successfully or not. Published on cron.
Summary
Functions
The LemonCore.Event type atom this payload is published under.
Payload version. Bumped only for a breaking field change (see the semver table in docs/platform/bus-events.md §4.3).
The struct's field names, in declaration order.
Build the payload from a map that may be a legacy free-form payload.
Build the payload, raising on unknown or missing keys.
Types
@type t() :: %LemonCore.Events.CronRunCompleted{ agent_id: String.t() | nil, cron_run_id: String.t(), duration_ms: non_neg_integer() | nil, error: term() | nil, job_id: String.t(), output: String.t() | nil, router_run_id: String.t() | nil, run: map() | nil, session_key: String.t() | nil, status: atom() | nil, suppressed: boolean() }
Functions
@spec event_type() :: atom()
The LemonCore.Event type atom this payload is published under.
@spec event_version() :: pos_integer()
Payload version. Bumped only for a breaking field change (see the semver table in docs/platform/bus-events.md §4.3).
@spec fields() :: [atom()]
The struct's field names, in declaration order.
Build the payload from a map that may be a legacy free-form payload.
Unknown keys are dropped and string keys are accepted, so a consumer can coerce whatever arrives on the topic. Enforced keys are still required — a map missing them is not a valid payload under any version.
Build the payload, raising on unknown or missing keys.
This is the publisher-side constructor: a typo should fail at the point of publish, not silently produce a payload with a nil field that a consumer reads as absent.