Class: Dynamoid::Transactions::Mutation::Increment

Inherits:
Base
  • Object
show all
Defined in:
lib/dynamoid/transactions/mutation/increment.rb

Instance Method Summary collapse

Methods inherited from Base

validate_attribute_names!

Constructor Details

#initialize(model, attribute, by, touch: nil) ⇒ Increment

Returns a new instance of Increment.



11
12
13
14
15
16
17
18
19
# File 'lib/dynamoid/transactions/mutation/increment.rb', line 11

def initialize(model, attribute, by, touch: nil)
  super()

  @model = model
  @attribute = attribute
  @by = by
  @touch = touch
  @action_requests = [] # will be filled in later with Inc#action_requests
end

Instance Method Details

#aborted?Boolean

Returns:

  • (Boolean)


43
44
45
46
# File 'lib/dynamoid/transactions/mutation/increment.rb', line 43

def aborted?
  # ignore Inc#abort?
  false
end

#action_requestsObject

rubocop:disable Style/TrivialAccessors



57
58
59
# File 'lib/dynamoid/transactions/mutation/increment.rb', line 57

def action_requests # rubocop:disable Style/TrivialAccessors
  @action_requests
end

#observable_by_user_resultObject



53
54
55
# File 'lib/dynamoid/transactions/mutation/increment.rb', line 53

def observable_by_user_result
  @model
end

#on_commitObject



32
33
34
35
36
# File 'lib/dynamoid/transactions/mutation/increment.rb', line 32

def on_commit
  # ignore Inc#on_commit
  @model.clear_attribute_changes(@attribute)
  @model.run_callbacks(:commit)
end

#on_registrationObject



21
22
23
24
25
26
27
28
29
30
# File 'lib/dynamoid/transactions/mutation/increment.rb', line 21

def on_registration
  @model.run_callbacks(:touch) do
    @model.increment(@attribute, @by)
    change = @model.read_attribute(@attribute) - (@model.send(:attribute_was, @attribute) || 0)

    inc_action = Inc.new(@model.class, @model.hash_key, @model.range_value, { @attribute => change, touch: @touch })
    inc_action.on_registration
    @action_requests = inc_action.action_requests
  end
end

#on_rollbackObject



38
39
40
41
# File 'lib/dynamoid/transactions/mutation/increment.rb', line 38

def on_rollback
  # ignore Inc#on_rollback
  @model.run_callbacks(:rollback)
end

#skipped?Boolean

Returns:

  • (Boolean)


48
49
50
51
# File 'lib/dynamoid/transactions/mutation/increment.rb', line 48

def skipped?
  # ignore Inc#skipped?
  @by == 0 # rubocop:disable Style/NumericPredicate
end