Sha256: 59c5965372f034bfefad5a84be3ceb1cc28b52b392a3b37c873dc46feeb67d35

Contents?: true

Size: 552 Bytes

Versions: 7

Compression:

Stored size: 552 Bytes

Contents

class MeasurementsPresenter
  attr_reader :measurements

  def initialize(measurements)
    @measurements = measurements
  end

  def to_json(*args)
    Houston.benchmark "[#{self.class.name.underscore}] Render JSON" do
      query = measurements.select(<<-SQL)
        taken_at "timestamp",
        name,
        value,
        json_build_object('type', subject_type, 'id', subject_id) "subject"
      SQL

      ActiveRecord::Base.connection.select_value("select array_to_json(array_agg(row_to_json(t))) from (#{query.to_sql}) t")
    end
  end

end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
houston-core-0.9.0 app/presenters/measurements_presenter.rb
houston-core-0.9.0.rc1 app/presenters/measurements_presenter.rb
houston-core-0.8.4 app/presenters/measurements_presenter.rb
houston-core-0.8.3 app/presenters/measurements_presenter.rb
houston-core-0.8.2 app/presenters/measurements_presenter.rb
houston-core-0.8.1 app/presenters/measurements_presenter.rb
houston-core-0.8.0 app/presenters/measurements_presenter.rb