v3: avoid N+1 queries when eager loading repository relations
This commit is contained in:
parent
0f6b02b339
commit
eb88cf6a2a
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue
Block a user