lib/ex_scylla/execution/execution_profile.ex

defmodule ExScylla.Execution.ExecutionProfile do
  alias ExScylla.Types, as: T

  use ExScylla.Macros.Native, [
                          prefix: :ep,
                          docs_rs_path: "/scylla/transport/execution_profile/struct.ExecutionProfile.html"
                        ]

  native_f(
    func: :builder,
    args: [],
    args_spec: [],
    return_spec: T.execution_profile_builder(),
    doc_example: """
    iex> ep = ExecutionProfile.builder()
    ...>          |> ExecutionProfileBuilder.build()
    iex> true = is_reference(ep)
    """
  )

  native_f(
    func: :into_handle_with_label,
    args: [ep, label],
    args_spec: [T.execution_profile(), String.t()],
    return_spec: T.execution_profile_handle(),
    doc_example: """
    iex> eph = ExecutionProfile.builder()
    ...>          |> ExecutionProfileBuilder.build()
    ...>          |> ExecutionProfile.into_handle_with_label("my_label")
    iex> true = is_reference(eph)
    """
  )

  native_f(
    func: :into_handle,
    args: [ep],
    args_spec: [T.execution_profile()],
    return_spec: T.execution_profile_handle(),
    doc_example: """
    iex> eph = ExecutionProfile.builder()
    ...>          |> ExecutionProfileBuilder.build()
    ...>          |> ExecutionProfile.into_handle()
    iex> true = is_reference(eph)
    """
  )

  native_f(
    func: :to_builder,
    args: [ep],
    args_spec: [T.execution_profile()],
    return_spec: T.execution_profile_builder(),
    doc_example: """
    iex> ep = ExecutionProfileBuilder.new()
    ...>          |> ExecutionProfileBuilder.build()
    iex> epb = ExecutionProfile.to_builder(ep)
    iex> true = is_reference(ep)
    iex> true = is_reference(epb)
    """
  )
end