ファイル
btrc-hub/backend/app/controllers/counts_tables_controller.rb
T
2026-10-28 21:13:08 +09:00

39 行
1.6 KiB
Ruby

class CountsTablesController < ApplicationController
def definition
locale = resolve_locale!
definition = CountsResourceDefinition.new(params[:resource])
render json: { fields: definition.metadata,
output_fields: definition.output_fields,
filter_fields: definition.filter_metadata,
axes: { latest: definition.axes(false), history: definition.axes(true) },
name_columns: definition.name_columns,
column_aliases: definition.column_aliases,
condition_aliases: definition.condition_aliases,
grains: CountsAxes::GRAINS,
defaults: CountsDefaults.metadata(params[:resource], locale: locale.code) }
rescue ArgumentError
head :bad_request
end
def index
resolve_locale!
render json: CountsTableQuery.new(request.query_parameters).call
rescue CountsTableQuery::TooManyColumns
render json: { error: 'too_many_columns', max_columns: CountsTableQuery::MAX_COLUMNS },
status: :unprocessable_entity
rescue ActiveRecord::StatementTimeout => error
Rails.logger.warn("counts_query_timeout: #{ error.class }")
render json: { error: 'counts_query_timeout' }, status: :service_unavailable
rescue ArgumentError, TypeError, KeyError, JSON::ParserError
head :bad_request
end
def candidates
resolve_locale!
render json: CountsCandidates.new(request.query_parameters.merge(
'resource' => request.path_parameters[:resource])).call
rescue ArgumentError, TypeError, KeyError
head :bad_request
end
end