A simple DynamoDB ORM container on aws-sdk v3 forked from https://github.com/yetanothernguyen/dynamo_record
Add this line to your application's Gemfile:
gem 'dynamodb_record'
And then execute:
$ bundle
Or install it yourself as:
$ gem install dynamodb_record
To create a model with DynamoRecord, simply include the DynamoRecord::Document mixin in your class as such::
class User
include DynamoRecord::Document
end
Declaring a field is done by using the field
method. For example, the following defines a User model with a first and last name:
class User
include DynamoRecord::Document
field :first_name, :string
field :last_name, :string
end
field
accepts the following options:
- :default to specify a default value
- :hash_key to specify a DynamoDB hash key
- :range_key to specify a DynamoDB range key
- :index to specify an index
DynamoRecord provides a similar persistence interface compared to other ORMs.
user = User.new(first_name: 'John', last_name: 'Doe')
user.save
user = User.create(first_name: 'John', last_name: 'Doe')
user.destroy
users = User.all
users = User.where(first_name: 'John')
users = User.where(first_name: 'John', limit: 5)
user = User.find('f9b351b0-d06d-4fff-b8d4-8af162e2b8ba')
User.find!('f9b351b0-d06d-4fff-b8d4-8af162e2b8ba')
Associations are placed in their respective classes
car.rb
class Car
include DynamodbRecord::Document
field :marca, :string
has_many :insurances
end
insurance.rb
class Insurance
include DynamodbRecord::Document
field :name, :string
field :car_id, :string, index: true
belongs_to :car
end
There are many ways to generate associations:
# Find a car with ID 'UVX123'
car = Car.find('UVX123')
# Create a new insurance instance
insurance = Insurance.new(name: 'Bolivar')
# Associate the insurance with the car
car.insurances << insurance
- Fork it ( https://github.com/[my-github-username]/dynamo_record/fork )
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create a new Pull Request