Class: Dynamoid::Transactions::Mutation::Inc

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

Instance Method Summary collapse

Methods inherited from Base

validate_attribute_names!

Constructor Details

#initialize(model_class, hash_key, range_key, counters) ⇒ Inc

Returns a new instance of Inc.



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

def initialize(model_class, hash_key, range_key, counters)
  super()

  @model_class = model_class
  @hash_key = hash_key
  @range_key = range_key
  @counters = counters || {}
  @touch = @counters.delete(:touch)
end

Instance Method Details

#aborted?Boolean

Returns:

  • (Boolean)


30
31
32
# File 'lib/dynamoid/transactions/mutation/inc.rb', line 30

def aborted?
  false
end

#action_requestsObject



42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
# File 'lib/dynamoid/transactions/mutation/inc.rb', line 42

def action_requests
  builder = Builders::UpdateRequestBuilder.new(@model_class)

  # primary key to look up an item to update
  builder.hash_key = cast_and_dump(@model_class.hash_key, @hash_key)
  builder.range_key = cast_and_dump(@model_class.range_key, @range_key) if @model_class.range_key?

  # require primary key to exist
  builder.add_expression_attribute_name('#_h', @model_class.hash_key)
  condition_expression = 'attribute_exists(#_h)'

  if @model_class.range_key?
    builder.add_expression_attribute_name('#_r', @model_class.range_key)
    condition_expression += ' AND attribute_exists(#_r)'
  end
  builder.condition_expression = condition_expression

  @counters.each do |name, value|
    builder.add_value(name, cast_and_dump(name, value))
  end

  if @touch
    timestamp = DateTime.now.in_time_zone(Time.zone)

    timestamp_attributes_to_touch.each do |name|
      builder.set_attributes(name => dump(name, timestamp))
    end
  end

  [builder.request]
end

#observable_by_user_resultObject



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

def observable_by_user_result
  nil
end

#on_commitObject



26
# File 'lib/dynamoid/transactions/mutation/inc.rb', line 26

def on_commit; end

#on_registrationObject



21
22
23
24
# File 'lib/dynamoid/transactions/mutation/inc.rb', line 21

def on_registration
  validate_primary_key!
  validate_attribute_names!(@model_class, @counters.keys)
end

#on_rollbackObject



28
# File 'lib/dynamoid/transactions/mutation/inc.rb', line 28

def on_rollback; end

#skipped?Boolean

Returns:

  • (Boolean)


34
35
36
# File 'lib/dynamoid/transactions/mutation/inc.rb', line 34

def skipped?
  @counters.empty?
end