openSUSE/open-build-service

View on GitHub
src/api/app/queries/open_requests_finder.rb

Summary

Maintainability
A
0 mins
Test Coverage
A
92%
# Base Class
class OpenRequestsFinder
  def initialize(relation, project_name)
    @relation = relation
    @project_name = project_name
  end

  def call
    BsRequest.where(id: requests_finder.select('bs_requests.id'))
  end

  def requests_finder
    @relation
  end

  def requests_with_actions(request_numbers)
    @relation.includes(:bs_request_actions).where(number: request_numbers)
  end

  def count_incoming(request_numbers)
    requests_with_actions(request_numbers).where(bs_request_actions: { target_project: @project_name }).count
  end

  def count_outgoing(request_numbers)
    requests_with_actions(request_numbers).where(bs_request_actions: { source_project: @project_name }).count
  end
end