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 = Models::Repository
|
||||||
all = all.where(active: bool(active)) unless active.nil?
|
all = all.where(active: bool(active)) unless active.nil?
|
||||||
all = all.where(private: bool(private)) unless private.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
|
all
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -40,6 +40,11 @@ module Travis::API::V3
|
||||||
::Sidekiq::Client.push('queue'.freeze => queue, 'class'.freeze => class_name, 'args'.freeze => args)
|
::Sidekiq::Client.push('queue'.freeze => queue, 'class'.freeze => class_name, 'args'.freeze => args)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def includes?(key)
|
||||||
|
@includes ||= @params['include'.freeze].to_s.split(?,.freeze)
|
||||||
|
@includes.include? key
|
||||||
|
end
|
||||||
|
|
||||||
def bool(value)
|
def bool(value)
|
||||||
return false if value == 'false'.freeze
|
return false if value == 'false'.freeze
|
||||||
!!value
|
!!value
|
||||||
|
|
Loading…
Reference in New Issue
Block a user