Sha256: 97652346291afef25974b37b90ccf83436b615509c4b5639c488f193bcf8f36f

Contents?: true

Size: 899 Bytes

Versions: 1

Compression:

Stored size: 899 Bytes

Contents

# Author: Stephen Sykes

module SlimScrooge
  class ResultSet
    attr_reader :rows, :callsite_key
    
    def initialize(rows, callsite_key, fetched_columns)
      @rows = rows
      @callsite_key = callsite_key
      @fetched_columns = fetched_columns
    end
    
    def rows_by_key(key)
      @rows.inject({}) {|hash, row| hash[row[key]] = row; hash}
    end
    
    def reload!
      callsite = Callsites[@callsite_key]
      rows_hash = rows_by_key(callsite.primary_key)
      sql = callsite.reload_sql(rows_hash.keys, @fetched_columns)
      model_class = callsite.model_class
      new_rows = model_class.connection.send(:select, sql, "#{model_class.name} Reload SlimScrooged")
      new_rows.each do |row|
        if old_row = rows_hash[row[callsite.primary_key]]
          old_row.result_set = nil
          old_row.monitored_columns.merge!(row)
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
slim_scrooge-1.0.0 lib/slim_scrooge/result_set.rb