-module(automata@event@match).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/automata/event/match.gleam").
-export([has_source_kind/2, has_correlation_id/1, has_causation_id/1, has_trace_id/1]).
-if(?OTP_RELEASE >= 27).
-define(MODULEDOC(Str), -moduledoc(Str)).
-define(DOC(Str), -doc(Str)).
-else.
-define(MODULEDOC(Str), -compile([])).
-define(DOC(Str), -compile([])).
-endif.
-file("src/automata/event/match.gleam", 10).
?DOC(
" Body-agnostic predicates and routing helpers.\n"
"\n"
" For body-shape predicates, see `automata/event/builtin/match`.\n"
" Native Gleam `case` is the preferred mechanism for matching event\n"
" bodies; this module only covers source/metadata level routing.\n"
).
-spec has_source_kind(
automata@event:event(any()),
automata@event@source:source_kind()
) -> boolean().
has_source_kind(Event, Kind) ->
erlang:element(2, erlang:element(4, Event)) =:= Kind.
-file("src/automata/event/match.gleam", 14).
-spec has_correlation_id(automata@event:event(any())) -> boolean().
has_correlation_id(Event) ->
case erlang:element(2, erlang:element(6, Event)) of
{some, _} ->
true;
none ->
false
end.
-file("src/automata/event/match.gleam", 21).
-spec has_causation_id(automata@event:event(any())) -> boolean().
has_causation_id(Event) ->
case erlang:element(3, erlang:element(6, Event)) of
{some, _} ->
true;
none ->
false
end.
-file("src/automata/event/match.gleam", 28).
-spec has_trace_id(automata@event:event(any())) -> boolean().
has_trace_id(Event) ->
case erlang:element(4, erlang:element(6, Event)) of
{some, _} ->
true;
none ->
false
end.