lib/ex_the_one/structs/movie_response.ex

defmodule ExTheOne.Struct.MovieResponse do
  @moduledoc """
  The One API response Movie struct
  """
  alias __MODULE__

    @type docs :: list(movie)
    @type movie :: %{
      _id: String.t(),
      academyAwardNominations: integer(),
      academyAwardWins: integer(),
      boxOfficeRevenueInMillions: float(),
      budgetInMillions: integer(),
      name: String.t(),
      rottenTomatoesScore: integer(),
      runtimeInMinutes: integer(),
      }
    @type limit :: integer()
    @type offset :: integer()
    @type page :: integer()
    @type pages :: integer()
    @type total :: integer()

    @type t() :: %MovieResponse{
          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(MovieResponse, data)}
end