module CountsListing extend ActiveSupport::Concern def index locale = resolve_locale! resource = is_a?(CountsPostsController) ? 'posts' : 'tags' query = CountsQuery.new(version_scope, resource, request.query_parameters.except('locale') .merge('locale' => locale.code)) result = { count: query.count, page: query.page, limit: query.limit } if query.mode == 'summary' result.merge!(query.summary) else result[:versions] = CountsVersionRepr.many( query.details, resource:, language_code: locale.language_code) end render json: result rescue ArgumentError, TypeError head :bad_request end end