lib/schemas/rule_suite.ex

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

  @type t :: %__MODULE__{
          __info__: map,
          actor_id: integer | nil,
          actor_name: String.t() | nil,
          after_sha: String.t() | nil,
          before_sha: String.t() | nil,
          evaluation_result: String.t() | nil,
          id: integer | nil,
          pushed_at: DateTime.t() | nil,
          ref: String.t() | nil,
          repository_id: integer | nil,
          repository_name: String.t() | nil,
          result: String.t() | nil,
          rule_evaluations: [GitHub.RuleSuiteRuleEvaluations.t()] | nil
        }

  defstruct [
    :__info__,
    :actor_id,
    :actor_name,
    :after_sha,
    :before_sha,
    :evaluation_result,
    :id,
    :pushed_at,
    :ref,
    :repository_id,
    :repository_name,
    :result,
    :rule_evaluations
  ]

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

  def __fields__(:t) do
    [
      actor_id: {:union, [:integer, :null]},
      actor_name: {:union, [{:string, :generic}, :null]},
      after_sha: {:string, :generic},
      before_sha: {:string, :generic},
      evaluation_result: {:enum, ["pass", "fail"]},
      id: :integer,
      pushed_at: {:string, :date_time},
      ref: {:string, :generic},
      repository_id: :integer,
      repository_name: {:string, :generic},
      result: {:enum, ["pass", "fail", "bypass"]},
      rule_evaluations: [{GitHub.RuleSuiteRuleEvaluations, :t}]
    ]
  end
end