Sha256: 0b9a287e1fb0b12f50e9085e780d22f1e305a52de4fb6c62d04efc68a61abbc1

Contents?: true

Size: 1.34 KB

Versions: 4

Compression:

Stored size: 1.34 KB

Contents

# frozen_string_literal: true

module MLBStatsAPI
  module Teams
    def team(team_id)
      data = load("mlb_stats_api:teams:#{team_id}") do
        get("/teams/#{team_id}", hydrate: 'venue(timezone)').dig('teams', 0)
      end

      MLBStatsAPI::Team.new data
    end

    def teams(*team_ids)
      teams = ids = []

      team_ids.each do |team_id|
        value = @cache.load("mlb_stats_api:teams:#{team_id}")

        if value
          teams << MLBStatsAPI::Team.new(value)
        else
          ids << team_id
        end
      end

      teams.concat load_teams_by_id(ids)
    end

    def affiliates(team_id, season: nil)
      get "/teams/#{team_id}/affiliates", season: season
    end

    def coaches(team_id, date: nil)
      date ||= Date.today

      get "/teams/#{team_id}/coaches", date: date.strftime('%m/%d/%Y')
    end

    # def leaders(team_id)
    #   get("/teams/#{team_id}/leaders")
    # end

    def roster(team_id, type:, date: nil)
      get "/teams/#{team_id}/roster/#{type}", date: date.strftime('%m/%d/%Y')
    end

    protected

    def load_teams_by_id(ids)
      return [] if ids.none?

      get('/teams', teamId: ids.join(','), hydrate: 'venue(timezone)')
        .dig('teams')
        .map do |data|
          @cache.store("mlb_stats_api:teams:#{data['id']}", data)

          MLBStatsAPI::Team.new(data)
        end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
mlb_stats_api-0.2.5 lib/mlb_stats_api/teams.rb
mlb_stats_api-0.2.4 lib/mlb_stats_api/teams.rb
mlb_stats_api-0.2.3 lib/mlb_stats_api/teams.rb
mlb_stats_api-0.2.2 lib/mlb_stats_api/teams.rb