Packages
dagger
0.18.14
0.21.7
0.21.6
0.21.5
0.21.4
0.21.3
0.21.2
0.21.1
0.21.0
0.20.8
0.20.7
0.20.6
0.20.5
0.20.4
0.20.3
0.20.2
0.20.1
0.20.0
0.19.11
0.19.10
0.19.9
0.19.8
0.19.7
0.19.6
0.19.5
0.19.4
0.19.3
0.19.2
0.19.1
0.19.0
0.18.19
0.18.18
0.18.17
0.18.16
0.18.15
0.18.14
0.18.13
0.18.12
0.18.11
0.18.10
0.18.9
0.18.8
0.18.7
0.18.5
0.18.4
0.18.3
0.18.2
0.18.1
0.18.0
0.17.2
0.17.1
0.17.0
0.16.3
0.16.2
0.16.1
0.16.0
0.15.4
0.15.3
0.15.2
0.15.1
0.15.0
0.14.0
0.13.7
0.13.6
0.13.5
0.13.4
0.13.3
0.13.2
0.13.1
0.13.0
0.12.7
0.12.6
0.12.5
0.12.4
0.12.3
0.12.2
0.12.1
0.12.0
0.11.9
0.11.8
0.11.7
0.11.6
0.11.5
0.11.4
0.11.3
0.11.2
0.11.1
0.11.0
0.10.3
0.10.2
0.10.1
0.10.0
0.9.11
0.9.10
0.9.9
0.9.8
0.9.7
0.9.6
0.9.5
0.9.4
0.9.3
0.9.2
0.9.1
0.9.0
0.8.8
0.8.7
0.8.6
0.8.5
0.8.4
0.8.2
0.0.0
retired
Dagger SDK for Elixir
Current section
Files
Jump to
Current section
Files
lib/dagger/gen/function_call.ex
# This file generated by `dagger_codegen`. Please DO NOT EDIT.
defmodule Dagger.FunctionCall do
@moduledoc """
An active function call.
"""
use Dagger.Core.Base, kind: :object, name: "FunctionCall"
alias Dagger.Core.Client
alias Dagger.Core.QueryBuilder, as: QB
@derive Dagger.ID
defstruct [:query_builder, :client]
@type t() :: %__MODULE__{}
@doc """
A unique identifier for this FunctionCall.
"""
@spec id(t()) :: {:ok, Dagger.FunctionCallID.t()} | {:error, term()}
def id(%__MODULE__{} = function_call) do
query_builder =
function_call.query_builder |> QB.select("id")
Client.execute(function_call.client, query_builder)
end
@doc """
The argument values the function is being invoked with.
"""
@spec input_args(t()) :: {:ok, [Dagger.FunctionCallArgValue.t()]} | {:error, term()}
def input_args(%__MODULE__{} = function_call) do
query_builder =
function_call.query_builder |> QB.select("inputArgs") |> QB.select("id")
with {:ok, items} <- Client.execute(function_call.client, query_builder) do
{:ok,
for %{"id" => id} <- items do
%Dagger.FunctionCallArgValue{
query_builder:
QB.query()
|> QB.select("loadFunctionCallArgValueFromID")
|> QB.put_arg("id", id),
client: function_call.client
}
end}
end
end
@doc """
The name of the function being called.
"""
@spec name(t()) :: {:ok, String.t()} | {:error, term()}
def name(%__MODULE__{} = function_call) do
query_builder =
function_call.query_builder |> QB.select("name")
Client.execute(function_call.client, query_builder)
end
@doc """
The value of the parent object of the function being called. If the function is top-level to the module, this is always an empty object.
"""
@spec parent(t()) :: {:ok, Dagger.JSON.t()} | {:error, term()}
def parent(%__MODULE__{} = function_call) do
query_builder =
function_call.query_builder |> QB.select("parent")
Client.execute(function_call.client, query_builder)
end
@doc """
The name of the parent object of the function being called. If the function is top-level to the module, this is the name of the module.
"""
@spec parent_name(t()) :: {:ok, String.t()} | {:error, term()}
def parent_name(%__MODULE__{} = function_call) do
query_builder =
function_call.query_builder |> QB.select("parentName")
Client.execute(function_call.client, query_builder)
end
@doc """
Return an error from the function.
"""
@spec return_error(t(), Dagger.Error.t()) :: :ok | {:error, term()}
def return_error(%__MODULE__{} = function_call, error) do
query_builder =
function_call.query_builder
|> QB.select("returnError")
|> QB.put_arg("error", Dagger.ID.id!(error))
case Client.execute(function_call.client, query_builder) do
{:ok, _} -> :ok
error -> error
end
end
@doc """
Set the return value of the function call to the provided value.
"""
@spec return_value(t(), Dagger.JSON.t()) :: :ok | {:error, term()}
def return_value(%__MODULE__{} = function_call, value) do
query_builder =
function_call.query_builder |> QB.select("returnValue") |> QB.put_arg("value", value)
case Client.execute(function_call.client, query_builder) do
{:ok, _} -> :ok
error -> error
end
end
end
defimpl Jason.Encoder, for: Dagger.FunctionCall do
def encode(function_call, opts) do
{:ok, id} = Dagger.FunctionCall.id(function_call)
Jason.Encode.string(id, opts)
end
end
defimpl Nestru.Decoder, for: Dagger.FunctionCall do
def decode_fields_hint(_struct, _context, id) do
{:ok, Dagger.Client.load_function_call_from_id(Dagger.Global.dag(), id)}
end
end