v3: use query object for include logic to avoid n+1 queries

This commit is contained in:
Konstantin Haase 2015-04-28 22:02:03 +02:00
parent ad7ff86aa7
commit c3e96c4a55
3 changed files with 8 additions and 2 deletions

View File

@ -26,9 +26,10 @@ module Travis::API::V3
attr_reader :params, :main_type
def initialize(params, main_type)
def initialize(params, main_type, includes = nil)
@params = params
@main_type = main_type.to_s
@includes = includes
end
def perform_async(identifier, *args)

View File

@ -57,6 +57,10 @@ module Travis::API::V3
include.include?(field)
end
def query(type)
Queries[type].new({}, type, includes: include)
end
def render(representation)
if included.include? model
return REDUNDANT unless href

View File

@ -17,7 +17,8 @@ module Travis::API::V3
end
def repositories
access_control.visible_repositories(@model.repositories)
repositories = query(:repositories).for_owner(@model)
access_control.visible_repositories(repositories)
end
end
end