Anvil.Schema.Assignment (Anvil v0.1.1)

View Source

Ecto schema for labeling assignments.

Tracks the lifecycle of a sample assigned to a labeler, including status transitions, deadlines, and optimistic locking.

Summary

Functions

Marks an assignment as completed.

Requeues an assignment after timeout.

Reserves an assignment for a labeler with a timeout.

Marks an assignment as skipped.

Marks an assignment as timed out.

Types

t()

@type t() :: %Anvil.Schema.Assignment{
  __meta__: term(),
  deadline: DateTime.t() | nil,
  id: Ecto.UUID.t() | nil,
  inserted_at: DateTime.t() | nil,
  labeler: Anvil.Schema.Labeler.t() | Ecto.Association.NotLoaded.t() | nil,
  labeler_id: Ecto.UUID.t() | nil,
  labels: [Anvil.Schema.Label.t()] | Ecto.Association.NotLoaded.t(),
  queue: Anvil.Schema.Queue.t() | Ecto.Association.NotLoaded.t() | nil,
  queue_id: Ecto.UUID.t() | nil,
  requeue_attempts: integer(),
  requeue_delay_until: DateTime.t() | nil,
  reserved_at: DateTime.t() | nil,
  sample_id: Ecto.UUID.t() | nil,
  skip_reason: String.t() | nil,
  status: :pending | :reserved | :completed | :timed_out | :requeued | :skipped,
  timeout_seconds: integer() | nil,
  updated_at: DateTime.t() | nil,
  version: integer()
}

Functions

complete(assignment)

Marks an assignment as completed.

requeue(assignment, delay_seconds \\ 0)

Requeues an assignment after timeout.

reserve(assignment, timeout_seconds)

Reserves an assignment for a labeler with a timeout.

skip(assignment, reason \\ nil)

Marks an assignment as skipped.

timeout(assignment)

Marks an assignment as timed out.