v3: avoid N+1 queries when eager loading repository relations

This commit is contained in:
Konstantin Haase 2015-03-10 15:59:04 +01:00
parent 0f6b02b339
commit eb88cf6a2a
2 changed files with 8 additions and 1 deletions

View File

@ -11,7 +11,9 @@ module Travis::API::V3
all = Models::Repository
all = all.where(active: bool(active)) unless active.nil?
all = all.where(private: bool(private)) unless private.nil?
all = all.includes(:default_branch) # TODO: use includes params
all = all.includes(:owner) if includes? 'repository.owner'.freeze
all = all.includes(:last_build) if includes? 'repository.last_build'.freeze
all = all.includes(:default_branch)
all
end
end

View File

@ -40,6 +40,11 @@ module Travis::API::V3
::Sidekiq::Client.push('queue'.freeze => queue, 'class'.freeze => class_name, 'args'.freeze => args)
end
def includes?(key)
@includes ||= @params['include'.freeze].to_s.split(?,.freeze)
@includes.include? key
end
def bool(value)
return false if value == 'false'.freeze
!!value