lib/schemas/dependency_graph/diff.ex

defmodule GitHub.DependencyGraph.Diff do
  @moduledoc """
  Provides struct and type for a DependencyGraph.Diff
  """
  use GitHub.Encoder

  @type t :: %__MODULE__{
          __info__: map,
          change_type: String.t(),
          ecosystem: String.t(),
          license: String.t() | nil,
          manifest: String.t(),
          name: String.t(),
          package_url: String.t() | nil,
          scope: String.t(),
          source_repository_url: String.t() | nil,
          version: String.t(),
          vulnerabilities: [GitHub.DependencyGraph.DiffVulnerabilities.t()]
        }

  defstruct [
    :__info__,
    :change_type,
    :ecosystem,
    :license,
    :manifest,
    :name,
    :package_url,
    :scope,
    :source_repository_url,
    :version,
    :vulnerabilities
  ]

  @doc false
  @spec __fields__(atom) :: keyword
  def __fields__(type \\ :t)

  def __fields__(:t) do
    [
      change_type: {:enum, ["added", "removed"]},
      ecosystem: {:string, :generic},
      license: {:union, [{:string, :generic}, :null]},
      manifest: {:string, :generic},
      name: {:string, :generic},
      package_url: {:union, [{:string, :generic}, :null]},
      scope: {:enum, ["unknown", "runtime", "development"]},
      source_repository_url: {:union, [{:string, :generic}, :null]},
      version: {:string, :generic},
      vulnerabilities: [{GitHub.DependencyGraph.DiffVulnerabilities, :t}]
    ]
  end
end