Sha256: ad55217b43991b29580e4636e2e4675a05914327e942447559530a1cd644d679

Contents?: true

Size: 1.07 KB

Versions: 36

Compression:

Stored size: 1.07 KB

Contents

# WithAssignmentsBatch mirrors the WithAssignment mixin
# but implements operations in batches, so that they outperform
# their counterparts
module WithAssignmentsBatch
  extend ActiveSupport::Concern

  def find_assignments_for(user, organization = Organization.current, &block)
    block = block_given? ? block : lambda { |it, _e| it }

    return exercises.map { |it| block.call nil, it  } unless user

    pairs = exercises.map { |it| [it.id, [nil, it]] }.to_h
    Assignment.where(submitter: user, organization: organization, exercise: exercises).each do |it|
      pairs[it.exercise_id][0] = it
    end

    pairs.values.map { |assignment, exercise| block.call assignment, exercise }
  end

  def statuses_for(user, organization = Organization.current)
    find_assignments_for user, organization do |it|
      it&.status || Mumuki::Domain::Status::Submission::Pending
    end
  end

  def assignments_for(user, organization = Organization.current)
    find_assignments_for user, organization do |it, exercise|
      it || Assignment.build_for(user, exercise, organization)
    end
  end
end

Version data entries

36 entries across 36 versions & 1 rubygems

Version Path
mumuki-domain-9.23.0 app/models/concerns/with_assignments_batch.rb
mumuki-domain-9.22.1 app/models/concerns/with_assignments_batch.rb
mumuki-domain-9.22.0 app/models/concerns/with_assignments_batch.rb
mumuki-domain-9.21.0 app/models/concerns/with_assignments_batch.rb
mumuki-domain-9.20.0 app/models/concerns/with_assignments_batch.rb
mumuki-domain-9.19.0 app/models/concerns/with_assignments_batch.rb
mumuki-domain-9.18.0 app/models/concerns/with_assignments_batch.rb
mumuki-domain-9.17.0 app/models/concerns/with_assignments_batch.rb
mumuki-domain-9.16.0 app/models/concerns/with_assignments_batch.rb
mumuki-domain-9.15.0 app/models/concerns/with_assignments_batch.rb
mumuki-domain-9.14.1 app/models/concerns/with_assignments_batch.rb
mumuki-domain-9.14.0 app/models/concerns/with_assignments_batch.rb
mumuki-domain-9.13.1 app/models/concerns/with_assignments_batch.rb
mumuki-domain-9.13.0 app/models/concerns/with_assignments_batch.rb
mumuki-domain-9.12.0 app/models/concerns/with_assignments_batch.rb
mumuki-domain-9.11.0 app/models/concerns/with_assignments_batch.rb
mumuki-domain-9.10.0 app/models/concerns/with_assignments_batch.rb
mumuki-domain-9.9.0 app/models/concerns/with_assignments_batch.rb
mumuki-domain-9.8.1 app/models/concerns/with_assignments_batch.rb
mumuki-domain-9.8.0 app/models/concerns/with_assignments_batch.rb