Forge.Sample (Forge v0.1.1)

View Source

Core data structure representing a sample in the Forge pipeline.

A sample flows through the pipeline, undergoing transformations and measurements. The sample struct tracks its data, computed measurements, and lifecycle status.

Summary

Functions

Adds measurements to the sample

Checks if sample is in dead-letter queue

Checks if sample is labeled

Marks sample for dead-letter queue with reason.

Marks sample as labeled

Marks sample as measured with current timestamp

Marks sample as ready

Marks sample as skipped

Checks if sample has been measured

Merges data into sample

Creates a new sample with the given attributes.

Checks if sample is pending

Checks if sample is ready

Checks if sample was skipped

Updates sample data

Types

status()

@type status() :: :pending | :measured | :ready | :labeled | :skipped | :dlq

t()

@type t() :: %Forge.Sample{
  created_at: DateTime.t(),
  data: map(),
  dlq_reason: map() | nil,
  id: String.t(),
  measured_at: DateTime.t() | nil,
  measurements: map(),
  pipeline: atom(),
  status: status()
}

Functions

add_measurements(sample, measurements)

Adds measurements to the sample

dlq?(arg1)

Checks if sample is in dead-letter queue

labeled?(arg1)

Checks if sample is labeled

mark_dlq(sample, reason)

Marks sample for dead-letter queue with reason.

Options

  • :stage - Stage name that failed (required)
  • :error - Error that caused failure (required)
  • :attempts - Number of attempts made (optional)

mark_labeled(sample)

Marks sample as labeled

mark_measured(sample)

Marks sample as measured with current timestamp

mark_ready(sample)

Marks sample as ready

mark_skipped(sample)

Marks sample as skipped

measured?(arg1)

Checks if sample has been measured

merge_data(sample, data)

Merges data into sample

new(opts)

Creates a new sample with the given attributes.

Options

  • :id - Unique identifier (required)
  • :pipeline - Pipeline name (required)
  • :data - Sample data map (required)
  • :status - Initial status (default: :pending)
  • :measurements - Initial measurements map (default: %{})
  • :created_at - Creation timestamp (default: now)

Examples

iex> Forge.Sample.new(id: "123", pipeline: :test, data: %{value: 42})
%Forge.Sample{id: "123", pipeline: :test, data: %{value: 42}, status: :pending}

pending?(arg1)

Checks if sample is pending

ready?(arg1)

Checks if sample is ready

skipped?(arg1)

Checks if sample was skipped

update_data(sample, data)

Updates sample data