lib/ex_the_one/structs/quote_response.ex

defmodule ExTheOne.Struct.QuoteResponse do
  @moduledoc """
  The One API response quote struct
  """
  alias __MODULE__

  @type docs :: list(quote)
  @type quote :: %{
          _id: String.t(),
          character: String.t(),
          dialog: String.t(),
          id: String.t(),
          movie: String.t()
        }
  @type limit :: integer()
  @type offset :: integer()
  @type page :: integer()
  @type pages :: integer()
  @type total :: integer()

  @type t() :: %QuoteResponse{
          docs: docs(),
          limit: limit(),
          offset: offset(),
          page: page(),
          pages: pages(),
          total: total()
        }
  defstruct [:docs, :limit, :offset, :page, :pages, :total]

  def to_struct(data), do: {:ok, struct(QuoteResponse, data)}
end