Skip to main content

src/aion_client@handle.erl

-module(aion_client@handle).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/aion_client/handle.gleam").
-export([new/3, signal_raw/3, signal/4, query_raw/4, 'query'/5, query_payload/3, cancel/2, describe/1, subscribe/2, with_run_id/2, run_id/1, workflow_id/1, target_run/2]).

-if(?OTP_RELEASE >= 27).
-define(MODULEDOC(Str), -moduledoc(Str)).
-define(DOC(Str), -doc(Str)).
-else.
-define(MODULEDOC(Str), -compile([])).
-define(DOC(Str), -compile([])).
-endif.

?MODULEDOC(" WorkflowHandle and per-workflow operations.\n").

-file("src/aion_client/handle.gleam", 11).
-spec new(aion_client:client(), binary(), binary()) -> aion_client:workflow_handle().
new(Client, Workflow_id, Run_id) ->
    {workflow_handle, Client, Workflow_id, Run_id}.

-file("src/aion_client/handle.gleam", 32).
-spec signal_raw(
    aion_client:workflow_handle(),
    binary(),
    aion_client@payload:payload()
) -> {ok, nil} | {error, aion_client@error:error()}.
signal_raw(Handle, Signal_name, Input) ->
    {workflow_handle, Client, Workflow_id, Run_id} = Handle,
    aion_client:signal_raw(
        Client,
        {signal_options, Workflow_id, {some, Run_id}, Signal_name},
        Input
    ).

-file("src/aion_client/handle.gleam", 23).
-spec signal(
    aion_client:workflow_handle(),
    binary(),
    FNE,
    fun((FNE) -> gleam@json:json())
) -> {ok, nil} | {error, aion_client@error:error()}.
signal(Handle, Signal_name, Input, Encoder) ->
    signal_raw(Handle, Signal_name, aion_client@payload:encode(Input, Encoder)).

-file("src/aion_client/handle.gleam", 63).
-spec query_raw(
    aion_client:workflow_handle(),
    binary(),
    aion_client@payload:payload(),
    gleam@dynamic@decode:decoder(FNO)
) -> {ok, FNO} | {error, aion_client@error:error()}.
query_raw(Handle, Query_name, Args, Decoder) ->
    {workflow_handle, Client, Workflow_id, Run_id} = Handle,
    aion_client:query_raw(
        Client,
        {query_options, Workflow_id, {some, Run_id}, Query_name},
        Args,
        Decoder
    ).

-file("src/aion_client/handle.gleam", 53).
-spec 'query'(
    aion_client:workflow_handle(),
    binary(),
    FNJ,
    fun((FNJ) -> gleam@json:json()),
    gleam@dynamic@decode:decoder(FNK)
) -> {ok, FNK} | {error, aion_client@error:error()}.
'query'(Handle, Query_name, Args, Encoder, Decoder) ->
    query_raw(
        Handle,
        Query_name,
        aion_client@payload:encode(Args, Encoder),
        Decoder
    ).

-file("src/aion_client/handle.gleam", 86).
-spec query_payload(
    aion_client:workflow_handle(),
    binary(),
    aion_client@payload:payload()
) -> {ok, aion_client@payload:payload()} | {error, aion_client@error:error()}.
query_payload(Handle, Query_name, Args) ->
    {workflow_handle, Client, Workflow_id, Run_id} = Handle,
    aion_client:query_payload(
        Client,
        {query_options, Workflow_id, {some, Run_id}, Query_name},
        Args
    ).

-file("src/aion_client/handle.gleam", 107).
-spec cancel(aion_client:workflow_handle(), binary()) -> {ok, nil} |
    {error, aion_client@error:error()}.
cancel(Handle, Reason) ->
    {workflow_handle, Client, Workflow_id, Run_id} = Handle,
    aion_client:cancel(
        Client,
        {cancel_options, Workflow_id, {some, Run_id}, Reason}
    ).

-file("src/aion_client/handle.gleam", 126).
-spec describe(aion_client:workflow_handle()) -> {ok,
        aion_client:workflow_description()} |
    {error, aion_client@error:error()}.
describe(Handle) ->
    {workflow_handle, Client, Workflow_id, Run_id} = Handle,
    aion_client:describe(
        Client,
        {describe_options, Workflow_id, {some, Run_id}}
    ).

-file("src/aion_client/handle.gleam", 140).
-spec subscribe(
    aion_client:workflow_handle(),
    gleam@dynamic@decode:decoder(FNY)
) -> aion_client@stream:event_stream(FNY).
subscribe(Handle, Decoder) ->
    aion_client@stream:subscribe(Handle, Decoder).

-file("src/aion_client/handle.gleam", 147).
-spec with_run_id(aion_client:workflow_handle(), binary()) -> aion_client:workflow_handle().
with_run_id(Handle, Run_id) ->
    {workflow_handle, Client, Workflow_id, _} = Handle,
    {workflow_handle, Client, Workflow_id, Run_id}.

-file("src/aion_client/handle.gleam", 160).
-spec run_id(aion_client:workflow_handle()) -> binary().
run_id(Handle) ->
    {workflow_handle, _, _, Run_id} = Handle,
    Run_id.

-file("src/aion_client/handle.gleam", 165).
-spec workflow_id(aion_client:workflow_handle()) -> binary().
workflow_id(Handle) ->
    {workflow_handle, _, Workflow_id, _} = Handle,
    Workflow_id.

-file("src/aion_client/handle.gleam", 170).
-spec target_run(gleam@option:option(binary()), aion_client:workflow_handle()) -> aion_client:workflow_handle().
target_run(Run_id, Handle) ->
    case Run_id of
        {some, Run_id@1} ->
            with_run_id(Handle, Run_id@1);

        none ->
            Handle
    end.