1
0
mirror of https://github.com/meineerde/redmine.git synced 2026-01-31 11:37:14 +00:00

Optimize query models by replacing map with pluck (#39837).

Patch by Go MAEDA (@maeda).


git-svn-id: https://svn.redmine.org/redmine/trunk@22575 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
Go MAEDA 2023-12-29 08:00:23 +00:00
parent 5eccab9295
commit 3c692009c9
5 changed files with 16 additions and 21 deletions

View File

@ -47,18 +47,12 @@ class Group < Principal
'custom_fields',
:if => lambda {|group, user| user.admin? && !group.builtin?})
alias_attribute :name, :lastname
def to_s
name.to_s
end
def name
lastname
end
def name=(arg)
self.lastname = arg
end
def builtin_type
nil
end

View File

@ -159,7 +159,8 @@ class IssueQuery < Query
)
add_available_filter(
"priority_id",
:type => :list_with_history, :values => IssuePriority.all.collect{|s| [s.name, s.id.to_s]}
:type => :list_with_history,
:values => IssuePriority.pluck(:name, :id).map {|name, id| [name, id.to_s]}
)
add_available_filter(
"author_id",
@ -171,11 +172,13 @@ class IssueQuery < Query
)
add_available_filter(
"member_of_group",
:type => :list_optional, :values => lambda {Group.givable.visible.collect {|g| [g.name, g.id.to_s]}}
:type => :list_optional,
:values => lambda {Group.givable.visible.pluck(:name, :id).map {|name, id| [name, id.to_s]}}
)
add_available_filter(
"assigned_to_role",
:type => :list_optional, :values => lambda {Role.givable.collect {|r| [r.name, r.id.to_s]}}
:type => :list_optional,
:values => lambda {Role.givable.pluck(:name, :id).map {|name, id| [name, id.to_s]}}
)
add_available_filter(
"fixed_version_id",
@ -195,7 +198,7 @@ class IssueQuery < Query
add_available_filter(
"category_id",
:type => :list_optional_with_history,
:values => lambda {project.issue_categories.collect{|s| [s.name, s.id.to_s]}}
:values => lambda {project.issue_categories.pluck(:name, :id).map {|name, id| [name, id.to_s]}}
) if project
add_available_filter "subject", :type => :text
add_available_filter "description", :type => :text

View File

@ -589,7 +589,7 @@ class Query < ActiveRecord::Base
end
def subproject_values
project.descendants.visible.collect{|s| [s.name, s.id.to_s]}
project.descendants.visible.pluck(:name, :id).map {|name, id| [name, id.to_s]}
end
def principals
@ -651,7 +651,7 @@ class Query < ActiveRecord::Base
else
statuses = IssueStatus.all.sorted
end
statuses.collect{|s| [s.name, s.id.to_s]}
statuses.pluck(:name, :id).map {|name, id| [name, id.to_s]}
end
def watcher_values
@ -996,7 +996,7 @@ class Query < ActiveRecord::Base
if field == 'project_id' || (self.type == 'ProjectQuery' && %w[id parent_id].include?(field))
if v.delete('mine')
v += User.current.memberships.map {|m| m.project_id.to_s}
v += User.current.memberships.pluck(:project_id).map(&:to_s)
end
if v.delete('bookmarks')
v += User.current.bookmarked_project_ids

View File

@ -80,7 +80,7 @@ class TimeEntryQuery < Query
"issue.category_id",
:type => :list_optional,
:name => l("label_attribute_of_issue", :name => l(:field_category)),
:values => lambda {project.issue_categories.collect{|s| [s.name, s.id.to_s]}}
:values => lambda {project.issue_categories.pluck(:name, :id).map {|name, id| [name, id.to_s]}}
) if project
add_available_filter(
"issue.subject",

View File

@ -45,7 +45,7 @@ class UserQuery < Query
type: :list_optional, values: ->{ auth_sources_values }
add_available_filter "is_member_of_group",
type: :list_optional,
values: ->{ Group.givable.visible.map {|g| [g.name, g.id.to_s] } }
values: ->{ Group.givable.visible.pluck(:name, :id).map {|name, id| [name, id.to_s]} }
if Setting.twofa?
add_available_filter "twofa_scheme",
type: :list_optional,
@ -65,9 +65,7 @@ class UserQuery < Query
end
def auth_sources_values
AuthSource.order(name: :asc).to_a.map do |auth_source|
[auth_source.name, auth_source.id]
end
AuthSource.order(name: :asc).pluck(:name, :id)
end
def user_statuses_values
@ -131,7 +129,7 @@ class UserQuery < Query
def sql_for_is_member_of_group_field(field, operator, value)
if ["*", "!*"].include? operator
value = Group.givable.map(&:id)
value = Group.givable.ids
end
e = operator.start_with?("!") ? "NOT EXISTS" : "EXISTS"