mikevallano/tmdb-moviequeue

View on GitHub
app/entities/tv_episode.rb

Summary

Maintainability
A
15 mins
Test Coverage
# frozen_string_literal: true

class TVEpisode
  attr_accessor :episode_id, :episode_number, :name, :air_date, :guest_stars, :season_number, :overview, :still_path

  def initialize(episode_id:, episode_number:, name:, air_date:, guest_stars:, season_number:, overview:, still_path:)
    @episode_id = episode_id
    @episode_number = episode_number
    @name = name
    @air_date = air_date
    @guest_stars = guest_stars
    @season_number = season_number
    @overview = overview
    @still_path = still_path
  end

  def self.parse_records(episodes_data)
    episodes_data.map do |data|
      parse_record(data)
    end
  end

  def self.parse_record(data)
    air_date = Date.parse(data[:air_date]) if data[:air_date].present?
    guest_stars = TVCastMember.parse_records(data[:guest_stars]) if data[:guest_stars].present?
    new(
      episode_id: data[:id],
      episode_number: data[:episode_number],
      name: data[:name],
      air_date: air_date,
      guest_stars: guest_stars,
      season_number: data[:season_number],
      overview: data[:overview],
      still_path: data[:still_path]
    )
  end
end