このコミットが含まれているのは:
@@ -46,11 +46,12 @@ class CountsStateQuery
|
||||
# Keep totals, rows, and detail pages on one repeatable-read database snapshot.
|
||||
ApplicationRecord.transaction do
|
||||
unless @history_loaded
|
||||
@post_start = PostVersion.minimum(:created_at)
|
||||
@tag_start = TagVersion.minimum(:created_at)
|
||||
@post_start = HistoryAccess.visible(PostVersion.all).minimum(:created_at)
|
||||
@tag_start = HistoryAccess.visible(TagVersion.all).minimum(:created_at)
|
||||
@history_loaded = true
|
||||
end
|
||||
result = { page: @page, limit: @limit, at: @at.iso8601(6),
|
||||
result = { population_count: HistoryAccess.population_count(
|
||||
@resource == 'posts' ? PostVersion : TagVersion), page: @page, limit: @limit, at: @at.iso8601(6),
|
||||
coverage: { basis: 'recorded_snapshots', exact: false,
|
||||
post_history_from: @post_start&.iso8601(6),
|
||||
tag_history_from: @tag_start&.iso8601(6) } }
|
||||
@@ -131,7 +132,10 @@ class CountsStateQuery
|
||||
end
|
||||
|
||||
def state_sql(table, boundary, live: false)
|
||||
sql = "SELECT v.* FROM #{ table } v WHERE #{ latest_condition(table, 'v', boundary) }"
|
||||
model = { 'post_versions' => PostVersion, 'tag_versions' => TagVersion,
|
||||
'nico_tag_versions' => NicoTagVersion }.fetch(table)
|
||||
sql = "SELECT v.* FROM #{ table } v WHERE #{ latest_condition(table, 'v', boundary) } " +
|
||||
"AND (#{ HistoryAccess.sql(model, 'v') })"
|
||||
live ? "#{ sql } AND v.event_type <> 'discard'" : sql
|
||||
end
|
||||
|
||||
@@ -350,7 +354,7 @@ class CountsStateQuery
|
||||
|
||||
def order_sql(expressions, default, final)
|
||||
raw = @params.fetch('sort', default)
|
||||
sorts = raw.empty? ? [] : raw.split(',', -1).map { _1.split(':', -1) }
|
||||
sorts = raw.empty? ? [] : QueryState.list(raw).map { _1.split(':', -1) }
|
||||
raise ArgumentError if sorts.map(&:first).uniq.length != sorts.length
|
||||
raise ArgumentError if sorts.length > expressions.length
|
||||
|
||||
|
||||
新しいイシューから参照
ユーザーをブロックする