Commutator
Commutator is a Model object interface for Amazon DynamoDB.
Installation
Add this line to your application's Gemfile:
gem 'commutator'And then execute:
$ bundle
Or install it yourself as:
$ gem install commutator
Usage
TODO: Needs work
Basic usage example..
class Paint
include Commutator::Model
table_name "paint_products"
attribute :name, :hex_color, type: :string
attribute :created_ts, :updated_at, type: :integer
validates :name, :hex_color, presence: true
primary_key hash: :name, range: :created_ts
before_put_item :prevent_dupes, :add_timestamps
module Scopes
def by_hex(hex)
index_name('hex-index')
with_key_condition_expression do |expression|
expression.where('#? = :?', names: %w(hex_color), values: [hex_color.downcase])
end
end
end
private
def prevent_dupes(options)
options.condition_expression.where_not do |expression|
expression.where('name = :?', values: [name])
end
end
def add_timestamps(options)
now = Time.now.to_i
options.item['updated_at'] = now
options.item['created_at'] ||= now
end
end
Color.by_hex("#BBAADD").first
Color.create(name: "Black", hex_color: "#000000")Development
After checking out the repo, run bin/setup to install dependencies.
DynamoDB Local is also required for running tests tagged with :dynamo => true. Check the Amazon Documentation for Downloading and Running DynamoDB Local.
Then, run rspec to run the tests. You can also run bin/console for an interactive prompt that will allow you to experiment.
To install this gem onto your local machine, run bundle exec rake install.
Contributing
Bug reports and pull requests are welcome on GitHub at https://github.com/tablexi/commutator.
License
The gem is available as open source under the terms of the Apache License, Version 2.0.