Foundry.Context.EdgeEntry (foundry v0.1.4)

Copy Markdown

Represents a directed edge between two nodes in the project context graph.

Relations:

  • references: structural dependency (belongs_to relationship)
  • referenced_by: inverse structural dependency (has_one/has_many relationship)
  • writes: behavioral write dependency (Reactor create/update step)
  • reads: behavioral read dependency (Reactor read step)
  • async: event-driven dependency (Oban job → Reactor)
  • guards: rule guards a step or resource policy
  • sequence: step-to-step ordering within Reactor/Transfer
  • compensation: compensation path in saga
  • configures: declarative config module/resource configures a Reactor
  • authenticates: AshAuthentication User → Token
  • persists_to: resource persists to external system
  • queues_via: job/reactor queues via external queue
  • calls_adapter: transfer step calls integration adapter
  • triggers: boundary trigger starts a downstream flow
  • enqueues: boundary trigger/job enqueues a job
  • calls_action: LiveView/page invokes a resource action
  • feature_flagged_by: page is gated behind a feature flag

Summary

Types

relation()

@type relation() ::
  :references
  | :referenced_by
  | :writes
  | :reads
  | :async
  | :guards
  | :sequence
  | :compensation
  | :configures
  | :authenticates
  | :persists_to
  | :queues_via
  | :calls_adapter
  | :triggers
  | :enqueues
  | :calls_action
  | :feature_flagged_by

t()

@type t() :: %Foundry.Context.EdgeEntry{
  action_name: String.t() | nil,
  compliance_ids: [String.t()],
  cross_app: boolean(),
  cross_project: boolean(),
  from: String.t(),
  relation: relation(),
  step_index: integer() | nil,
  step_name: String.t() | nil,
  to: String.t()
}

Functions

new(from, to, relation)

@spec new(from :: String.t(), to :: String.t(), relation :: relation()) :: t()