Lightning.Invocation (Lightning v2.13.3)

View Source

The Invocation context.

Summary

Functions

Return all logs for a step as a string of text, separated by new line breaks

Returns an %Ecto.Changeset{} for tracking dataclip changes.

Returns an %Ecto.Changeset{} for tracking step changes.

Creates a dataclip.

Deletes a dataclip.

Exports work orders by performing a series of database operations wrapped in a transaction.

Gets a single dataclip given one of

Gets a single dataclip.

Query for retrieving the dataclip that was step's starting dataclip.

Query for retrieving the dataclip that was the result of a successful step.

Gets a single step.

Fetches a step and preloads the job via the step's event.

Returns the list of dataclips.

Returns the list of steps.

Return all logs for a step as a list

Searches for work orders based on project and search parameters.

Updates a dataclip.

Functions

assemble_logs_for_job_and_run(job_id, run_id)

@spec assemble_logs_for_job_and_run(Ecto.UUID.t(), Ecto.UUID.t()) :: binary()

assemble_logs_for_step(step)

@spec assemble_logs_for_step(Lightning.Invocation.Step.t()) :: binary()

Return all logs for a step as a string of text, separated by new line breaks

change_dataclip(dataclip, attrs \\ %{})

Returns an %Ecto.Changeset{} for tracking dataclip changes.

Examples

iex> change_dataclip(dataclip)
%Ecto.Changeset{data: %Dataclip{}}

change_step(step, attrs \\ %{})

Returns an %Ecto.Changeset{} for tracking step changes.

Examples

iex> change_step(step)
%Ecto.Changeset{data: %Step{}}

count_workorders(project, search_params)

create_dataclip(attrs \\ %{})

@spec create_dataclip(attrs :: map()) ::
  {:ok, Lightning.Invocation.Dataclip.t()}
  | {:error, Ecto.Changeset.t(Lightning.Invocation.Dataclip)}

Creates a dataclip.

Examples

iex> create_dataclip(%{field: value})
{:ok, %Dataclip{}}

iex> create_dataclip(%{field: bad_value})
{:error, %Ecto.Changeset{}}

delete_dataclip(dataclip)

Deletes a dataclip.

Examples

iex> delete_dataclip(dataclip)
{:ok, %Dataclip{}}

iex> delete_dataclip(dataclip)
{:error, %Ecto.Changeset{}}

export_workorders(project, user, search_params)

Exports work orders by performing a series of database operations wrapped in a transaction.

This function creates an audit log, a project file record, and enqueues an export job using a transaction. Each step is executed as part of an Ecto.Multi operation, ensuring atomicity.

Parameters

  • project - The project for which work orders are being exported. Expected to be a map or struct with an id field.
  • user - The user initiating the export operation. Expected to be a map or struct with an id field.
  • search_params - A map of search parameters used to filter work orders to export.

Returns

  • {:ok, %{audit: audit, project_file: project_file, export_job: job}} on success:

    • audit: The audit log entry created for the export operation.
    • project_file: The project file record created for the export operation.
    • export_job: The result of the export job enqueuing step.
  • {:error, step, reason, changes} if any step in the transaction fails:

    • step: The step where the error occurred, e.g., :audit, :project_file, or :export_job.
    • reason: The reason for the failure, typically an error atom.
    • changes: A map of changes up to the point of failure.

get_dataclip(step)

@spec get_dataclip(step_or_uuid :: Lightning.Invocation.Step.t() | Ecto.UUID.t()) ::
  Lightning.Invocation.Dataclip.t() | nil

Gets a single dataclip given one of:

  • a Dataclip uuid
  • a Step model

Returns nil if the Dataclip does not exist.

Examples

iex> get_dataclip("27b73932-16c7-4a72-86a3-85d805ccff98")
%Dataclip{}

iex> get_dataclip("27b73932-16c7-4a72-86a3-85d805ccff98")
nil

iex> get_dataclip(%Step{id: "a uuid"})
%Dataclip{}

get_dataclip!(id)

@spec get_dataclip!(id :: Ecto.UUID.t()) :: Lightning.Invocation.Dataclip.t()

Gets a single dataclip.

Raises Ecto.NoResultsError if the Dataclip does not exist.

Examples

iex> get_dataclip!(123)
%Dataclip{}

iex> get_dataclip!(456)
** (Ecto.NoResultsError)

get_dataclip_details!(id)

@spec get_dataclip_details!(id :: Ecto.UUID.t()) :: Lightning.Invocation.Dataclip.t()

get_dataclip_for_run(run_id)

@spec get_dataclip_for_run(run_id :: Ecto.UUID.t()) ::
  Lightning.Invocation.Dataclip.t() | nil

get_dataclip_query(step)

Query for retrieving the dataclip that was step's starting dataclip.

get_first_dataclip_for_run_and_job(run_id, job_id)

@spec get_first_dataclip_for_run_and_job(
  run_id :: Ecto.UUID.t(),
  job_id :: Ecto.UUID.t()
) :: Lightning.Invocation.Dataclip.t() | nil

get_first_step_for_run_and_job(run_id, job_id)

@spec get_first_step_for_run_and_job(
  run_id :: Ecto.UUID.t(),
  job_id :: Ecto.UUID.t()
) :: Lightning.Invocation.Step.t() | nil

get_output_dataclip_query(step)

Query for retrieving the dataclip that was the result of a successful step.

get_step!(id)

@spec get_step!(Ecto.UUID.t()) :: Lightning.Invocation.Step.t()

Gets a single step.

Raises Ecto.NoResultsError if the Step does not exist.

Examples

iex> get_step!(123)
%Step{}

iex> get_step!(456)
** (Ecto.NoResultsError)

get_step_count_for_run(run_id)

@spec get_step_count_for_run(run_id :: Ecto.UUID.t()) :: non_neg_integer()

get_step_with_job!(id)

Fetches a step and preloads the job via the step's event.

get_workorders_by_ids(ids)

get_workorders_count_limit()

list_dataclips()

@spec list_dataclips() :: [Lightning.Invocation.Dataclip.t()]

Returns the list of dataclips.

Examples

iex> list_dataclips()
[%Dataclip{}, ...]

list_dataclips(project)

list_dataclips_for_job(job, limit \\ 5)

@spec list_dataclips_for_job(Lightning.Workflows.Job.t(), limit :: pos_integer()) :: [
  Lightning.Invocation.Dataclip.t()
]

list_dataclips_for_job(job, user_filters, opts)

@spec list_dataclips_for_job(
  Lightning.Workflows.Job.t(),
  user_filters :: map(),
  opts :: Keyword.t()
) :: [Lightning.Invocation.Dataclip.t()]

list_dataclips_query(project)

@spec list_dataclips_query(Lightning.Projects.Project.t()) :: Ecto.Queryable.t()

list_steps()

Returns the list of steps.

Examples

iex> list_steps()
[%Step{}, ...]

list_steps_for_project(project, params \\ %{})

@spec list_steps_for_project(Lightning.Projects.Project.t(), keyword() | map()) ::
  Scrivener.Page.t()

list_steps_for_project_query(project)

@spec list_steps_for_project_query(Lightning.Projects.Project.t()) :: Ecto.Query.t()

logs_for_step(step)

@spec logs_for_step(Lightning.Invocation.Step.t()) :: list()

Return all logs for a step as a list

search_workorders(project)

Searches for work orders based on project and search parameters.

Parameters:

  • project: The project to filter the work orders by.
  • search_params: The parameters to guide the search.

Returns:

A paginated list of work orders that match the criteria.

Example:

search_workorders(%Project{id: 1}, %SearchParams{status: ["completed"]})

search_workorders(project, search_params, params \\ %{})

search_workorders_for_export_query(project, search_params)

search_workorders_for_retry(project, search_params)

update_dataclip(dataclip, attrs)

Updates a dataclip.

Examples

iex> update_dataclip(dataclip, %{field: new_value})
{:ok, %Dataclip{}}

iex> update_dataclip(dataclip, %{field: bad_value})
{:error, %Ecto.Changeset{}}

with_runs(query)