Module: Dynameek::Model::ClassMethods
Instance Method Summary
collapse
Methods included from Structure
#aws_item_to_hash, #check_field, #current_range, #field, #fields, #hash_key, #hash_key_info, #index_table?, #multi_column_hash_key, #multi_column_hash_key?, #multi_column_hash_key_fields, #multi_column_join, #multi_column_join=, #range, #range?, #range_info, #read_units, #read_write, #use_index_table, #write_units
Methods included from DynamoDb
#build!, #convert_from_dynamodb, #convert_to_dynamodb, #dump_safe, #dynamo_db, #exists?, #index_table, #index_table_exists?, #table
Instance Method Details
#before_save(method) ⇒ Object
148
149
150
|
# File 'lib/dynameek/model.rb', line 148
def before_save method
before_save_callbacks << method.to_sym
end
|
#before_save_callbacks ⇒ Object
144
145
146
|
# File 'lib/dynameek/model.rb', line 144
def before_save_callbacks
@before_save_callbacks ||= Set.new
end
|
#create(attrib) ⇒ Object
136
137
138
139
140
141
142
|
# File 'lib/dynameek/model.rb', line 136
def create(attrib)
instance = self.new
attrib.each do |key, val|
instance.send "#{key.to_s}=", val
end
instance.save
end
|
#delete_table ⇒ Object
113
114
115
116
117
118
119
120
121
|
# File 'lib/dynameek/model.rb', line 113
def delete_table
index_table.delete if dynamo_db.tables[index_table_name].exists?
table.delete if dynamo_db.tables[table_name].exists?
while dynamo_db.tables[table_name].exists? &&
dynamo_db.tables[index_table_name].exists?
sleep 1
end
end
|
#find(hash_key, range_val = nil) ⇒ Object
99
100
101
102
103
104
105
106
107
108
109
110
111
|
# File 'lib/dynameek/model.rb', line 99
def find(hash_key, range_val=nil)
raise Exception("This has a composite hash with a range, the range val is required") if(range_val.nil? && range?)
hash_key = hash_key.join(multi_column_join) if(hash_key.is_a?(Array))
items = if range?
range_val = convert_to_dynamodb(range_info.type, range_val)
table.batch_get(:all, [[hash_key, range_val]])
else
table.batch_get(:all, [hash_key])
end
return nil if(items.entries.size == 0)
item_to_instance(items.first)
end
|
#index_table_name ⇒ Object
156
157
158
|
# File 'lib/dynameek/model.rb', line 156
def index_table_name
table_name + "_INDEX"
end
|
#item_to_instance(item) ⇒ Object
123
124
125
126
127
128
129
130
131
132
133
134
|
# File 'lib/dynameek/model.rb', line 123
def item_to_instance(item)
item_hsh = aws_item_to_hash(item)
instance = self.new
fields.each do |field, type|
next if multi_column_hash_key? && field == hash_key_info.field
instance.send "#{field.to_s}=", convert_from_dynamodb(type, item_hsh[field.to_s])
end
if item.is_a?(AWS::DynamoDB::Item) || item.is_a?(AWS::DynamoDB::ItemData)
instance.dynamo_item = item.is_a?(AWS::DynamoDB::ItemData) ? item.item : item
end
instance
end
|
#table_name ⇒ Object
152
153
154
|
# File 'lib/dynameek/model.rb', line 152
def table_name
self.to_s.gsub(/.*?([A-Za-z][A-Za-z0-9]*)$/, '\1')
end
|