Arie/serveme

View on GitHub
app/workers/log_scan_worker.rb

Summary

Maintainability
A
0 mins
Test Coverage
# frozen_string_literal: true

class LogScanWorker
  include Sidekiq::Worker

  sidekiq_options retry: false

  attr_accessor :reservation_id

  def perform(reservation_id)
    @reservation_id = reservation_id
    scan_logs
    link_found_players_to_reservation
  end

  def players
    @players ||= []
  end

  def logs_tf_uploads
    @logs_tf_uploads ||= []
  end

  def scan_logs
    logs.collect do |l|
      players << FindPlayersInLog.perform(l)
    end
  end

  def link_found_players_to_reservation
    players.reject(&:empty?).flatten.uniq.each do |steam_uid|
      ReservationPlayer.where(reservation_id: reservation_id, steam_uid: steam_uid).first_or_create!
    end
  end

  def logs
    log_pattern = Rails.root.join('server_logs', reservation_id.to_s, '*.log')
    Dir.glob(log_pattern)
  end
end