Module: Aquasync::AggregatedMethods::ClassMethods

Defined in:
lib/models/concerns/aquasync_aggregated_methods.rb

Instance Method Summary collapse

Instance Method Details

#append_attributes(delta, opts) ⇒ Object

Handle :append_attributes option.

Parameters:

  • (Hash)


37
38
39
40
41
42
43
44
# File 'lib/models/concerns/aquasync_aggregated_methods.rb', line 37

def append_attributes(delta, opts)
  return delta unless opts[:append_attributes]
  atr = opts[:append_attributes]
  klass = self.name
  delta.merge!(atr[:all]) if atr[:all]
  delta.merge!(atr[klass]) if atr[klass]
  delta
end

#aq_commit_deltas(deltas, opts = {}) ⇒ NilClass

DeltasAggregator requirement

Returns:

  • (NilClass)


28
29
30
31
32
33
# File 'lib/models/concerns/aquasync_aggregated_methods.rb', line 28

def aq_commit_deltas(deltas, opts = {})
  deltas.each {|d|
    delta = append_attributes(d, opts)
    commit_delta(delta, opts)
  }
end

#aq_deltas(ust, opts = {}) ⇒ Array<Aquasync::Base>

DeltasAggregator requirement

Returns:



22
23
24
# File 'lib/models/concerns/aquasync_aggregated_methods.rb', line 22

def aq_deltas(ust, opts = {})
  begin_of_association_chain(opts).where(:ust.gt => ust)
end

#begin_of_association_chain(opts) ⇒ Object



62
63
64
65
66
67
68
69
70
# File 'lib/models/concerns/aquasync_aggregated_methods.rb', line 62

def begin_of_association_chain(opts)
  model = opts[:begin_of_association_chain]
  if(model)
    # current_user Book => current_user.books
    model.send(self.name.downcase.pluralize)
  else
    self
  end
end

#commit_delta(delta, opts) ⇒ Object

commits a delta.

Parameters:

  • (Hash)


48
49
50
51
52
53
54
55
# File 'lib/models/concerns/aquasync_aggregated_methods.rb', line 48

def commit_delta(delta, opts)
  record = begin_of_association_chain(opts).find_by(gid: delta["gid"])
  if record
    record.resolve_conflict(delta)
  else
    create_record_from_delta(delta, opts)
  end
end

#create_record_from_delta(delta, opts) ⇒ Object

Parameters:

  • (Hash)


58
59
60
# File 'lib/models/concerns/aquasync_aggregated_methods.rb', line 58

def create_record_from_delta(delta, opts)
  begin_of_association_chain(opts).create!(delta)
end