lib/sptfy/object/play_history.ex

defmodule Sptfy.Object.PlayHistory do
  @moduledoc """
  Module for recently played history struct.
  """

  use Sptfy.Object

  alias Sptfy.Object.{Context, SimplifiedTrack}

  defstruct ~w[
    context
    played_at
    track
  ]a

  def new(fields) do
    fields =
      fields
      |> Helpers.atomize_keys()
      |> Map.update(:context, nil, &Context.new/1)
      |> Map.update(:played_at, nil, &Helpers.parse_timestamp/1)
      |> Map.update(:track, nil, &SimplifiedTrack.new/1)

    struct(__MODULE__, fields)
  end
end