Packages
dagger
0.20.2
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.ex
# This file generated by `dagger_codegen`. Please DO NOT EDIT.
defmodule Dagger.Function do
@moduledoc """
Function represents a resolver provided by a Module.
A function always evaluates against a parent object and is given a set of named arguments.
"""
use Dagger.Core.Base, kind: :object, name: "Function"
alias Dagger.Core.Client
alias Dagger.Core.QueryBuilder, as: QB
@derive Dagger.ID
defstruct [:query_builder, :client]
@type t() :: %__MODULE__{}
@doc """
Arguments accepted by the function, if any.
"""
@spec args(t()) :: {:ok, [Dagger.FunctionArg.t()]} | {:error, term()}
def args(%__MODULE__{} = function) do
query_builder =
function.query_builder |> QB.select("args") |> QB.select("id")
with {:ok, items} <- Client.execute(function.client, query_builder) do
{:ok,
for %{"id" => id} <- items do
%Dagger.FunctionArg{
query_builder:
QB.query()
|> QB.select("loadFunctionArgFromID")
|> QB.put_arg("id", id),
client: function.client
}
end}
end
end
@doc """
The reason this function is deprecated, if any.
"""
@spec deprecated(t()) :: {:ok, String.t() | nil} | {:error, term()}
def deprecated(%__MODULE__{} = function) do
query_builder =
function.query_builder |> QB.select("deprecated")
Client.execute(function.client, query_builder)
end
@doc """
A doc string for the function, if any.
"""
@spec description(t()) :: {:ok, String.t()} | {:error, term()}
def description(%__MODULE__{} = function) do
query_builder =
function.query_builder |> QB.select("description")
Client.execute(function.client, query_builder)
end
@doc """
A unique identifier for this Function.
"""
@spec id(t()) :: {:ok, Dagger.FunctionID.t()} | {:error, term()}
def id(%__MODULE__{} = function) do
query_builder =
function.query_builder |> QB.select("id")
Client.execute(function.client, query_builder)
end
@doc """
The name of the function.
"""
@spec name(t()) :: {:ok, String.t()} | {:error, term()}
def name(%__MODULE__{} = function) do
query_builder =
function.query_builder |> QB.select("name")
Client.execute(function.client, query_builder)
end
@doc """
The type returned by the function.
"""
@spec return_type(t()) :: Dagger.TypeDef.t()
def return_type(%__MODULE__{} = function) do
query_builder =
function.query_builder |> QB.select("returnType")
%Dagger.TypeDef{
query_builder: query_builder,
client: function.client
}
end
@doc """
The location of this function declaration.
"""
@spec source_map(t()) :: Dagger.SourceMap.t() | nil
def source_map(%__MODULE__{} = function) do
query_builder =
function.query_builder |> QB.select("sourceMap")
%Dagger.SourceMap{
query_builder: query_builder,
client: function.client
}
end
@doc """
Returns the function with the provided argument
"""
@spec with_arg(t(), String.t(), Dagger.TypeDef.t(), [
{:description, String.t() | nil},
{:default_value, Dagger.JSON.t() | nil},
{:default_path, String.t() | nil},
{:ignore, [String.t()]},
{:source_map, Dagger.SourceMapID.t() | nil},
{:deprecated, String.t() | nil}
]) :: Dagger.Function.t()
def with_arg(%__MODULE__{} = function, name, type_def, optional_args \\ []) do
query_builder =
function.query_builder
|> QB.select("withArg")
|> QB.put_arg("name", name)
|> QB.put_arg("typeDef", Dagger.ID.id!(type_def))
|> QB.maybe_put_arg("description", optional_args[:description])
|> QB.maybe_put_arg("defaultValue", optional_args[:default_value])
|> QB.maybe_put_arg("defaultPath", optional_args[:default_path])
|> QB.maybe_put_arg("ignore", optional_args[:ignore])
|> QB.maybe_put_arg("sourceMap", optional_args[:source_map])
|> QB.maybe_put_arg("deprecated", optional_args[:deprecated])
%Dagger.Function{
query_builder: query_builder,
client: function.client
}
end
@doc """
Returns the function updated to use the provided cache policy.
"""
@spec with_cache_policy(t(), Dagger.FunctionCachePolicy.t(), [{:time_to_live, String.t() | nil}]) ::
Dagger.Function.t()
def with_cache_policy(%__MODULE__{} = function, policy, optional_args \\ []) do
query_builder =
function.query_builder
|> QB.select("withCachePolicy")
|> QB.put_arg("policy", policy)
|> QB.maybe_put_arg("timeToLive", optional_args[:time_to_live])
%Dagger.Function{
query_builder: query_builder,
client: function.client
}
end
@doc """
Returns the function with a flag indicating it's a check.
"""
@spec with_check(t()) :: Dagger.Function.t()
def with_check(%__MODULE__{} = function) do
query_builder =
function.query_builder |> QB.select("withCheck")
%Dagger.Function{
query_builder: query_builder,
client: function.client
}
end
@doc """
Returns the function with the provided deprecation reason.
"""
@spec with_deprecated(t(), [{:reason, String.t() | nil}]) :: Dagger.Function.t()
def with_deprecated(%__MODULE__{} = function, optional_args \\ []) do
query_builder =
function.query_builder
|> QB.select("withDeprecated")
|> QB.maybe_put_arg("reason", optional_args[:reason])
%Dagger.Function{
query_builder: query_builder,
client: function.client
}
end
@doc """
Returns the function with the given doc string.
"""
@spec with_description(t(), String.t()) :: Dagger.Function.t()
def with_description(%__MODULE__{} = function, description) do
query_builder =
function.query_builder
|> QB.select("withDescription")
|> QB.put_arg("description", description)
%Dagger.Function{
query_builder: query_builder,
client: function.client
}
end
@doc """
Returns the function with the given source map.
"""
@spec with_source_map(t(), Dagger.SourceMap.t()) :: Dagger.Function.t()
def with_source_map(%__MODULE__{} = function, source_map) do
query_builder =
function.query_builder
|> QB.select("withSourceMap")
|> QB.put_arg("sourceMap", Dagger.ID.id!(source_map))
%Dagger.Function{
query_builder: query_builder,
client: function.client
}
end
end
defimpl Jason.Encoder, for: Dagger.Function do
def encode(function, opts) do
{:ok, id} = Dagger.Function.id(function)
Jason.Encode.string(id, opts)
end
end
defimpl Nestru.Decoder, for: Dagger.Function do
def decode_fields_hint(_struct, _context, id) do
{:ok, Dagger.Client.load_function_from_id(Dagger.Global.dag(), id)}
end
end