lib/exograph/call_edge.ex

defmodule Exograph.CallEdge do
  @moduledoc "Reach-derived call graph edge."

  @type t :: %__MODULE__{
          id: integer() | nil,
          package_id: integer() | nil,
          package_version_id: integer() | nil,
          file_id: integer() | nil,
          caller_node_id: integer(),
          callee_node_id: integer(),
          call_site_fragment_id: integer() | nil,
          caller_qualified_name: String.t(),
          callee_qualified_name: String.t(),
          line: pos_integer() | nil,
          column: pos_integer() | nil,
          metadata: map()
        }

  defstruct [
    :id,
    :package_id,
    :package_version_id,
    :file_id,
    :caller_node_id,
    :callee_node_id,
    :call_site_fragment_id,
    :caller_qualified_name,
    :callee_qualified_name,
    :line,
    :column,
    metadata: %{}
  ]

  def new(attrs) do
    struct(__MODULE__, Map.new(attrs))
  end
end