Sha256: e8c8fcf1d0b870386757250721d366980c488cd32d9312c7309d0ad16bdc83ce

Contents?: true

Size: 1.25 KB

Versions: 1

Compression:

Stored size: 1.25 KB

Contents

# frozen_string_literal: true

module FtcEvent
  class Event
    attr_reader :db

    def initialize(filename)
      @db = SQLite3::Database.new(filename, results_as_hash: true)
    end

    def config
      db.execute('SELECT key, value FROM config').each_with_object({}) do |row, h|
        h[row['key']] = row['value']
      end
    end

    def leagues
      db.execute('SELECT code FROM leagueInfo').map { |row| row['code'] }
    end

    def code
      config['code']
    end

    def name
      config['name']
    end

    def short_name
      code.upcase
    end

    def start
      Time.at(config['start'].to_f / 1000.0)
    end

    def end
      Time.at(config['end'].to_f / 1000.0)
    end

    def league(code = leagues.first)
      League.new(self, code)
    end

    def team(number)
      Team.new(self, number)
    end

    def qualifications
      Qualifications.new(self)
    end

    def alliance(rank)
      Alliance.new(self, rank)
    end

    def eliminations
      Eliminations.new(self)
    end

    def phases
      [qualifications, eliminations]
    end

    def each_phase
      return enum_for(:each_phase) unless block_given?

      phases.each do |phase|
        yield phase unless phase.matches.empty?
      end

      nil
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
ftc_event-0.1.0 lib/ftc_event/event.rb