Skip to content

Commit 78f7a5f

Browse files
committed
refs #40 trying preload supply/resource items
1 parent 997bde4 commit 78f7a5f

File tree

2 files changed

+45
-2
lines changed

2 files changed

+45
-2
lines changed

lib/redmine_supply/patches/issue_patch.rb

Lines changed: 33 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ module IssuePatch
44
def self.apply
55
unless Issue < self
66
Issue.prepend self
7-
7+
Issue.extend ClassMethods
88
Issue.class_eval do
99

1010
has_many :issue_supply_items, dependent: :destroy
@@ -57,6 +57,38 @@ def delete_supply_item_journals
5757
end
5858
private :delete_supply_item_journals
5959

60+
module ClassMethods
61+
# Preloads issue supply items for a collection of issues
62+
def load_issue_supply_items(issues, user=User.current)
63+
if issues.any?
64+
issue_ids = issues.map(&:id)
65+
_issue_supply_items = IssueSupplyItem.where(:issue_id => issue_ids)
66+
issues.each do |issue|
67+
issue.instance_variable_set "@issue_supply_items", _issue_supply_items.select {|s| s.issue_id == issue.id}
68+
end
69+
end
70+
end
71+
# Preloads issue human resource items for a collection of issues
72+
def load_issue_human_resource_items(issues, user=User.current)
73+
if issues.any?
74+
issue_ids = issues.map(&:id)
75+
_issue_human_resource_items = IssueResourceItem.where(resource_item_id: ResourceItem.humans.ids).where(:issue_id => issue_ids)
76+
issues.each do |issue|
77+
issue.instance_variable_set "@issue_human_resource_items", _issue_human_resource_items.select {|h| h.issue_id == issue.id}
78+
end
79+
end
80+
end
81+
# Preloads issue asset resource items for a collection of issues
82+
def load_issue_asset_resource_items(issues, user=User.current)
83+
if issues.any?
84+
issue_ids = issues.map(&:id)
85+
_issue_asset_resource_items = IssueResourceItem.where(resource_item_id: ResourceItem.assets.ids).where(:issue_id => issue_ids)
86+
issues.each do |issue|
87+
issue.instance_variable_set "@issue_asset_resource_items", _issue_asset_resource_items.select {|a| a.issue_id == issue.id}
88+
end
89+
end
90+
end
91+
end
6092
end
6193
end
6294
end

lib/redmine_supply/patches/issue_query_patch.rb

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,18 @@ def add_supply_items(a)
2929

3030
def issues(options={})
3131
options[:include] = add_supply_items(options[:include] || [])
32-
super(options)
32+
issues = super(options)
33+
# Preload issue supply/resource items
34+
if has_column?(:issue_supply_item_names)
35+
Issue.load_issue_supply_items(issues)
36+
end
37+
if has_column?(:issue_human_resource_item_names)
38+
Issue.load_issue_human_resource_items(issues)
39+
end
40+
if has_column?(:issue_asset_resource_item_names)
41+
Issue.load_issue_asset_resource_items(issues)
42+
end
43+
issues
3344
end
3445

3546
def issue_ids(options={})

0 commit comments

Comments
 (0)