class Ci::Builds::ListQuery < ApplicationQuery include CustomSortable attr_reader :params sort_columns :build_created, default_by: :build_created, default_direction: :desc def initialize(repo, params) @repo = repo @params = params end def call scope = @repo.builds builds = case params[:search] when 'success' then scope.successed when 'pending' then scope.pending when 'error' then scope.errored when 'running' then scope.running when 'failure' then scope.failed when 'killed' then scope.killed else scope end builds = builds.by_branch(params[:branch]) if params[:branch] custom_sort(builds, params[:sort_by], params[:sort_direction]) end end