PERF: Eager load field causing N+1 issue (#27626)

* PERF: Fix N+1 issue for javascript_cache

* FIX: missing upload fields should still appear in stylesheets

Sass is still expected to compile successfully even without uploads.
Revert a blank upload to have a blank URL

* DEV: remove unneeded test comment

---------

Co-authored-by: Jeff Wong <awole20@gmail.com>
This commit is contained in:
Amanda Alves Branquinho 2024-07-01 20:55:06 -03:00 committed by GitHub
parent 947990b7f6
commit 0acd6bea4c
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 12 additions and 6 deletions

View File

@ -714,17 +714,21 @@ class Theme < ActiveRecord::Base
def build_theme_uploads_hash
hash = {}
upload_fields.each do |field|
hash[field.name] = Discourse.store.cdn_url(field.upload.url) if field.upload&.url
end
upload_fields
.includes(:javascript_cache, :upload)
.each do |field|
hash[field.name] = Discourse.store.cdn_url(field.upload.url) if field.upload&.url
end
hash
end
def build_local_theme_uploads_hash
hash = {}
upload_fields.each do |field|
hash[field.name] = field.javascript_cache.local_url if field.javascript_cache
end
upload_fields
.includes(:javascript_cache, :upload)
.each do |field|
hash[field.name] = field.javascript_cache.local_url if field.javascript_cache
end
hash
end
@ -843,6 +847,8 @@ class Theme < ActiveRecord::Base
if upload = field.upload
url = upload_cdn_path(upload.url)
contents << "$#{field.name}: unquote(\"#{url}\");"
else
contents << "$#{field.name}: unquote(\"\");"
end
else
contents << to_scss_variable(field.name, field.value)