lib/schemas/diff_entry.ex

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

  @type t :: %__MODULE__{
          __info__: map,
          additions: integer,
          blob_url: String.t(),
          changes: integer,
          contents_url: String.t(),
          deletions: integer,
          filename: String.t(),
          patch: String.t() | nil,
          previous_filename: String.t() | nil,
          raw_url: String.t(),
          sha: String.t(),
          status: String.t()
        }

  defstruct [
    :__info__,
    :additions,
    :blob_url,
    :changes,
    :contents_url,
    :deletions,
    :filename,
    :patch,
    :previous_filename,
    :raw_url,
    :sha,
    :status
  ]

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

  def __fields__(:t) do
    [
      additions: :integer,
      blob_url: {:string, :uri},
      changes: :integer,
      contents_url: {:string, :uri},
      deletions: :integer,
      filename: {:string, :generic},
      patch: {:string, :generic},
      previous_filename: {:string, :generic},
      raw_url: {:string, :uri},
      sha: {:string, :generic},
      status:
        {:enum, ["added", "removed", "modified", "renamed", "copied", "changed", "unchanged"]}
    ]
  end
end