AI: address issue #445

このコミットが含まれているのは:
Codex Night Worker
2026-11-15 15:41:15 +09:00
コミット c4a8076ade
2個のファイルの変更、20行の追加、1行の削除
+1 -1
ファイルの表示
@@ -182,7 +182,7 @@ class CountsTableQuery
order = sort_sql { detail_expression(_1) }
query = query.order(Arel.sql((order + ['v.id ASC']).join(', ')))
.limit(limit).offset((page - 1) * limit)
query = query.includes(:external_tag) if @definition.resource == 'nico_tags'
query = query.preload(:external_tag) if @definition.resource == 'nico_tags'
rows = query.to_a
if ['posts', 'tags'].include?(@definition.resource)
point = population.history ? population.at :
+19
ファイルの表示
@@ -74,6 +74,25 @@ RSpec.describe 'Counts table API', type: :request do
end
end
it 'preloads external names separately for aliased link-change details' do
statements = []
listener = lambda do |_name, _start, _finish, _id, payload|
statements << payload[:sql]
end
ActiveSupport::Notifications.subscribed(listener, 'sql.active_record') do
result = query(axis('changed_field', 'linked_tags'))
expect(versions(result)).to eq([2, 3])
expect(result.fetch('versions').map { _1.fetch('name') })
.to eq(['nico:beta', 'nico:beta'])
end
details = statements.find { _1.include?('AS counts_latest') }
expect(details).not_to be_nil
expect(details).not_to include('JOIN `external_tags`')
names = statements.select { _1.match?(/SELECT .* FROM `external_tags`/) }
expect(names.length).to eq(1)
end
it 'advertises the legacy field, label and default columns only' do
get '/counts/definitions/nico_tags', params: { locale: 'ja' }
expect(response).to have_http_status(:ok)