Class: Marty::DataChange

Inherits:
Object
  • Object
show all
Includes:
Delorean::Model
Defined in:
lib/marty/data_change.rb

Constant Summary collapse

MAX_COUNT =

Some arbitrary limit so we don’t allow enormous queries

64000

Class Method Summary collapse

Class Method Details

.class_list_baseObject

Can be overriden in Marty apps



314
315
316
# File 'lib/marty/data_change.rb', line 314

def self.class_list_base
  class_list
end

.get_changed_data(t0, t1, klass, ids = nil) ⇒ Object



156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
# File 'lib/marty/data_change.rb', line 156

def self.get_changed_data(t0, t1, klass, ids = nil)
  # The following test fails when t0/t1 are infinity.  ActiveSupport
  # doesn't know about infinity.
  # return unless t0 < t1

  change_q = '(obsoleted_dt >= ? AND obsoleted_dt < ?)' +
             ' OR (created_dt >= ? AND created_dt < ?)'

  countq = klass.where(change_q, t0, t1, t0, t1)
  dataq = klass.where(change_q, t0, t1, t0, t1)

  if ids
    countq = countq.where(group_id: ids)
    dataq = dataq.where(group_id: ids)
  end

  raise "Change count exceeds limit #{MAX_COUNT}" if countq.count > MAX_COUNT

  dataq.order('group_id, created_dt').group_by(&:group_id)
end