Skip to content

Commit 8b12d4f

Browse files
authored
Merge pull request #319 from plural/remove-extra-queries-for-cards-and-printings
Use DB attributes to avoid unneccessary queries from relations.
2 parents 200aefd + a8a88a4 commit 8b12d4f

File tree

3 files changed

+21
-11
lines changed

3 files changed

+21
-11
lines changed

app/models/card.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ class Card < ApplicationRecord
1111
self.primary_key = :id
1212

1313
def latest_printing_id
14-
printing_ids[0]
14+
printing_ids_in_database[0]
1515
rescue StandardError
1616
nil
1717
end

app/resources/card_resource.rb

+9-5
Original file line numberDiff line numberDiff line change
@@ -38,12 +38,16 @@ class CardResource < ApplicationResource # rubocop:disable Metrics/ClassLength
3838
attribute :text, :string
3939
attribute :trash_cost, :integer
4040
attribute :is_unique, :boolean
41-
attribute :card_subtype_ids, :array_of_strings
41+
attribute :card_subtype_ids, :array_of_strings do
42+
@object.card_subtype_ids_in_database
43+
end
4244
attribute :display_subtypes, :string
4345
attribute :attribution, :string
4446
attribute :updated_at, :datetime
4547
attribute :format_ids, :array_of_strings
46-
attribute :card_pool_ids, :array_of_strings
48+
attribute :card_pool_ids, :array_of_strings do
49+
@object.card_pool_ids_in_database
50+
end
4751
attribute :snapshot_ids, :array_of_strings
4852
attribute :card_cycle_ids, :array_of_strings do
4953
@object.card_cycle_ids_in_database
@@ -94,18 +98,18 @@ class CardResource < ApplicationResource # rubocop:disable Metrics/ClassLength
9498
many_to_many :card_cycles do
9599
link do |c|
96100
format('%<url>s?filter[id]=%<ids>s', url: Rails.application.routes.url_helpers.card_cycles_url,
97-
ids: c.card_cycle_ids.join(','))
101+
ids: c.card_cycle_ids_in_database.join(','))
98102
end
99103
end
100104
many_to_many :card_sets do
101105
link do |c|
102106
format('%<url>s?filter[id]=%<ids>s', url: Rails.application.routes.url_helpers.card_sets_url,
103-
ids: c.card_set_ids.join(','))
107+
ids: c.card_set_ids_in_database.join(','))
104108
end
105109
end
106110
many_to_many :card_subtypes do
107111
link do |c|
108-
card_subtype_ids = c.card_subtype_ids.empty? ? 'none' : c.card_subtype_ids.join(',')
112+
card_subtype_ids = c.card_subtype_ids_in_database.empty? ? 'none' : c.card_subtype_ids_in_database.join(',')
109113
format('%<url>s?filter[id]=%<ids>s', url: Rails.application.routes.url_helpers.card_subtypes_url,
110114
ids: card_subtype_ids)
111115
end

app/resources/printing_resource.rb

+11-5
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,9 @@ class PrintingResource < ApplicationResource # rubocop:disable Metrics/ClassLeng
1414

1515
attribute :flavor, :string
1616
attribute :display_illustrators, :string
17-
attribute :illustrator_ids, :array_of_strings
17+
attribute :illustrator_ids, :array_of_strings do
18+
@object.illustrator_ids_in_database
19+
end
1820
attribute :illustrator_names, :array_of_strings
1921

2022
attribute :position, :integer
@@ -53,12 +55,16 @@ class PrintingResource < ApplicationResource # rubocop:disable Metrics/ClassLeng
5355
attribute :text, :string
5456
attribute :trash_cost, :integer
5557
attribute :is_unique, :boolean
56-
attribute :card_subtype_ids, :array_of_strings
58+
attribute :card_subtype_ids, :array_of_strings do
59+
@object.card_subtype_ids_in_database
60+
end
5761
attribute :card_subtype_names, :array_of_strings
5862
attribute :display_subtypes, :string
5963
attribute :attribution, :string
6064
attribute :format_ids, :array_of_strings
61-
attribute :card_pool_ids, :array_of_strings
65+
attribute :card_pool_ids, :array_of_strings do
66+
@object.card_pool_ids_in_database
67+
end
6268
attribute :snapshot_ids, :array_of_strings
6369
attribute :card_cycle_ids, :array_of_strings do
6470
@object.card_cycle_ids_in_database
@@ -118,14 +124,14 @@ class PrintingResource < ApplicationResource # rubocop:disable Metrics/ClassLeng
118124
many_to_many :card_subtypes do
119125
link do |p|
120126
format('%<url>s?filter[id]=%<ids>s', url: Rails.application.routes.url_helpers.card_subtypes_url,
121-
ids: p.card_subtype_ids.join(','))
127+
ids: p.card_subtype_ids_in_database.join(','))
122128
end
123129
end
124130

125131
many_to_many :illustrators do
126132
link do |p|
127133
format('%<url>s?filter[id]=%<ids>s', url: Rails.application.routes.url_helpers.illustrators_url,
128-
ids: p.illustrator_ids.join(','))
134+
ids: p.illustrator_ids_in_database.join(','))
129135
end
130136
end
131137

0 commit comments

Comments
 (0)