dynamodb_record 0.0.2 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +6 -3
- data/lib/dynamodb_record/fields.rb +11 -15
- data/lib/dynamodb_record/finders.rb +9 -2
- data/lib/dynamodb_record/persistence.rb +13 -1
- data/lib/dynamodb_record/version.rb +1 -1
- data/spec/app/models/authorization.rb +9 -0
- data/spec/dynamodb_record/fields_spec.rb +5 -1
- data/spec/dynamodb_record/finders_spec.rb +12 -13
- data/spec/dynamodb_record/persistence_spec.rb +47 -0
- data/spec/fixtures/vcr_cassettes/DynamodbRecord_Fields/_find/finds_record.yml +6 -6
- data/spec/fixtures/vcr_cassettes/DynamodbRecord_Fields/_find/when_record_doesn_t_exists/returns_empty_object.yml +6 -6
- data/spec/fixtures/vcr_cassettes/DynamodbRecord_Persistence/_destroy/when_no_range_key/destroys_record.yml +156 -0
- data/spec/fixtures/vcr_cassettes/DynamodbRecord_Persistence/_destroy/when_there_is_range_key/destroys_record.yml +156 -0
- data/spec/fixtures/vcr_cassettes/DynamodbRecord_Persistence/does_not_overwrite_existing_record.yml +104 -0
- data/spec/fixtures/vcr_cassettes/DynamodbRecord_Persistence/saves_record.yml +54 -0
- data/spec/fixtures/vcr_cassettes/DynamodbRecord_Persistence/updates_record.yml +156 -0
- metadata +16 -2
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 49693eaf2b663b1061fd4c1bb498fa8c1bc6f2d49ec3a02b5a85fe7fd5cd3161
         | 
| 4 | 
            +
              data.tar.gz: a52d2fdfddbe64f06f50d60e4076c57eae6093b6615f88743af1d557bb73b8eb
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 71c72c3eac3ce2212c19894745d03087c0466c1fa2cfc7bc29bf23d123f7204f7cc7eae96d37c199180786ea31fe5248e2fbceba294ff57acbd8d53d44aa8ac3
         | 
| 7 | 
            +
              data.tar.gz: '082aa5bb291c03ad4963a101e32efa070c10b403e1d5ca55f172ab7c60a26a7ceb5556d527e35e2bea04bf412762244accddc801d082903e08808dcda7f294a2'
         | 
    
        data/README.md
    CHANGED
    
    | @@ -7,7 +7,7 @@ A simple DynamoDB ORM container on aws-sdk v3 forked from https://github.com/yet | |
| 7 7 | 
             
            Add this line to your application's Gemfile:
         | 
| 8 8 |  | 
| 9 9 | 
             
            ```ruby
         | 
| 10 | 
            -
            gem ' | 
| 10 | 
            +
            gem 'dynamodb_record'
         | 
| 11 11 | 
             
            ```
         | 
| 12 12 |  | 
| 13 13 | 
             
            And then execute:
         | 
| @@ -16,7 +16,7 @@ And then execute: | |
| 16 16 |  | 
| 17 17 | 
             
            Or install it yourself as:
         | 
| 18 18 |  | 
| 19 | 
            -
                $ gem install  | 
| 19 | 
            +
                $ gem install dynamodb_record
         | 
| 20 20 |  | 
| 21 21 | 
             
            ## Usage
         | 
| 22 22 |  | 
| @@ -71,7 +71,10 @@ users = User.where(first_name: 'John', limit: 5) | |
| 71 71 |  | 
| 72 72 | 
             
            user = User.find('f9b351b0-d06d-4fff-b8d4-8af162e2b8ba')
         | 
| 73 73 | 
             
            ```
         | 
| 74 | 
            -
             | 
| 74 | 
            +
            #### With error
         | 
| 75 | 
            +
            ```ruby
         | 
| 76 | 
            +
            User.find!('f9b351b0-d06d-4fff-b8d4-8af162e2b8ba')
         | 
| 77 | 
            +
            ```
         | 
| 75 78 |  | 
| 76 79 | 
             
            ## Contributing
         | 
| 77 80 |  | 
| @@ -5,12 +5,14 @@ module DynamodbRecord | |
| 5 5 | 
             
                extend ActiveSupport::Concern
         | 
| 6 6 |  | 
| 7 7 | 
             
                included do
         | 
| 8 | 
            -
                  class_attribute :attributes,  | 
| 8 | 
            +
                  class_attribute :attributes, instance_writer: true
         | 
| 9 9 | 
             
                  self.attributes = {}
         | 
| 10 | 
            -
                  self.hash_key = nil
         | 
| 10 | 
            +
                  # self.hash_key = nil
         | 
| 11 11 |  | 
| 12 12 | 
             
                  # default hash key
         | 
| 13 13 | 
             
                  field :id, :string
         | 
| 14 | 
            +
                  field :created_at, :datetime
         | 
| 15 | 
            +
                  field :updated_at, :datetime
         | 
| 14 16 | 
             
                end
         | 
| 15 17 |  | 
| 16 18 | 
             
                class_methods do
         | 
| @@ -19,7 +21,8 @@ module DynamodbRecord | |
| 19 21 | 
             
                    # Add attributes
         | 
| 20 22 | 
             
                    attributes.merge!(name => { type:, options: opts })
         | 
| 21 23 |  | 
| 22 | 
            -
                    self.hash_key = name if opts[:hash_key]
         | 
| 24 | 
            +
                    # self.hash_key = name if opts[:hash_key]
         | 
| 25 | 
            +
                    # self.range_key = name if opts[:range_key]
         | 
| 23 26 |  | 
| 24 27 | 
             
                    # Generate methods to field
         | 
| 25 28 | 
             
                    define_method("#{named}=") { |value| write_attribute(named, value) }
         | 
| @@ -75,28 +78,21 @@ module DynamodbRecord | |
| 75 78 | 
             
                  def unload(attrs)
         | 
| 76 79 | 
             
                    {}.tap do |hash|
         | 
| 77 80 | 
             
                      attrs.each do |key, value|
         | 
| 78 | 
            -
                        if attributes[key.to_sym][:options][:hash_key]
         | 
| 79 | 
            -
             | 
| 80 | 
            -
             | 
| 81 | 
            -
                        end
         | 
| 81 | 
            +
                        # if attributes[key.to_sym][:options][:hash_key]
         | 
| 82 | 
            +
                        #   hash[:pk] = dump_field(value, attributes[key.to_sym])
         | 
| 83 | 
            +
                        # end
         | 
| 82 84 |  | 
| 83 | 
            -
                        # puts "KEY #{key}|#{value}|#{self.attributes[key.to_sym]}"
         | 
| 84 85 | 
             
                        hash[key] = dump_field(value, attributes[key.to_sym])
         | 
| 85 | 
            -
                        # puts "HASH: #{hash}"
         | 
| 86 86 | 
             
                      end
         | 
| 87 87 | 
             
                    end
         | 
| 88 88 | 
             
                  end
         | 
| 89 89 |  | 
| 90 90 | 
             
                  def hash_key
         | 
| 91 | 
            -
                    : | 
| 91 | 
            +
                    @hash_key = attributes.select { |_k,v| v[:options][:hash_key] }.keys.first || :id
         | 
| 92 92 | 
             
                  end
         | 
| 93 93 |  | 
| 94 94 | 
             
                  def range_key
         | 
| 95 | 
            -
                    @range_key ||=  | 
| 96 | 
            -
                      attributes.select { |_k, v| v[:options][:range_key] }.keys.first
         | 
| 97 | 
            -
                    rescue StandardError
         | 
| 98 | 
            -
                      nil
         | 
| 99 | 
            -
                    end
         | 
| 95 | 
            +
                    @range_key ||= attributes.select { |_k,v| v[:options][:range_key] }.keys.first rescue nil
         | 
| 100 96 | 
             
                  end
         | 
| 101 97 |  | 
| 102 98 | 
             
                  def secondary_indexes
         | 
| @@ -6,14 +6,21 @@ module DynamodbRecord | |
| 6 6 |  | 
| 7 7 | 
             
                class_methods do
         | 
| 8 8 | 
             
                  def find(id, range_key = nil)
         | 
| 9 | 
            -
                     | 
| 9 | 
            +
                    find!(id, range_key)
         | 
| 10 | 
            +
                  rescue StandardError
         | 
| 11 | 
            +
                    nil
         | 
| 12 | 
            +
                  end
         | 
| 10 13 |  | 
| 14 | 
            +
                  def find!(id, range_key = nil)
         | 
| 15 | 
            +
                    key = {}
         | 
| 16 | 
            +
                    key[hash_key] = id
         | 
| 11 17 | 
             
                    key[self.range_key] = range_key if self.range_key
         | 
| 18 | 
            +
             | 
| 12 19 | 
             
                    response = client.get_item(
         | 
| 13 20 | 
             
                      table_name:,
         | 
| 14 21 | 
             
                      key:
         | 
| 15 22 | 
             
                    )
         | 
| 16 | 
            -
                    response.item ? from_database(response.item) :  | 
| 23 | 
            +
                    response.item ? from_database(response.item) : raise('Record Not Found')
         | 
| 17 24 | 
             
                  end
         | 
| 18 25 | 
             
                end
         | 
| 19 26 | 
             
              end
         | 
| @@ -108,19 +108,31 @@ module DynamodbRecord | |
| 108 108 | 
             
                  options = self.class.default_options
         | 
| 109 109 |  | 
| 110 110 | 
             
                  self.id = SecureRandom.uuid if id.nil?
         | 
| 111 | 
            +
                  time = Time.now
         | 
| 112 | 
            +
                  self.created_at = time if created_at.nil?
         | 
| 113 | 
            +
                  self.updated_at = time
         | 
| 111 114 |  | 
| 112 115 | 
             
                  if @new_record # New item. Don't overwrite if id exists
         | 
| 113 116 | 
             
                    options.merge!(condition_expression: 'id <> :s', expression_attribute_values: { ':s' => id })
         | 
| 114 117 | 
             
                  end
         | 
| 115 118 |  | 
| 116 119 | 
             
                  options.merge!(item: self.class.unload(attributes))
         | 
| 120 | 
            +
                  # puts options
         | 
| 117 121 | 
             
                  self.class.client.put_item(options)
         | 
| 118 122 | 
             
                  @new_record = false
         | 
| 119 123 | 
             
                end
         | 
| 120 124 |  | 
| 121 125 | 
             
                def destroy
         | 
| 122 126 | 
             
                  options = self.class.default_options
         | 
| 123 | 
            -
                   | 
| 127 | 
            +
                  hash_key = self.class.hash_key
         | 
| 128 | 
            +
                  range_key = self.class.range_key
         | 
| 129 | 
            +
                  key = {}
         | 
| 130 | 
            +
                  key[hash_key] = self.class.dump_field(self.read_attribute(hash_key), self.class.attributes[hash_key])
         | 
| 131 | 
            +
             | 
| 132 | 
            +
                  if range_key.present?
         | 
| 133 | 
            +
                    key[range_key] = self.class.dump_field(self.read_attribute(range_key), self.class.attributes[range_key])
         | 
| 134 | 
            +
                  end
         | 
| 135 | 
            +
             | 
| 124 136 | 
             
                  self.class.client.delete_item(options.merge(key:))
         | 
| 125 137 | 
             
                end
         | 
| 126 138 | 
             
              end
         | 
| @@ -17,9 +17,13 @@ RSpec.describe DynamodbRecord::Fields do | |
| 17 17 | 
             
                end
         | 
| 18 18 | 
             
                expect(Employee.attributes).to eq({ id: { type: :string, options: {} },
         | 
| 19 19 | 
             
                                                    first_name: { type: :string, options: {} },
         | 
| 20 | 
            -
                                                    last_name: { type: :string, options: {} } | 
| 20 | 
            +
                                                    last_name: { type: :string, options: {} },
         | 
| 21 | 
            +
                                                    created_at: { type: :datetime, options: {} },
         | 
| 22 | 
            +
                                                    updated_at: { type: :datetime, options: {} }
         | 
| 23 | 
            +
                                                  })
         | 
| 21 24 | 
             
              end
         | 
| 22 25 |  | 
| 26 | 
            +
             | 
| 23 27 | 
             
              it 'accepts default value' do
         | 
| 24 28 | 
             
                class City
         | 
| 25 29 | 
             
                  include DynamodbRecord::Document
         | 
| @@ -4,18 +4,17 @@ require 'spec_helper' | |
| 4 4 |  | 
| 5 5 | 
             
            RSpec.describe DynamodbRecord::Fields, :vcr do
         | 
| 6 6 | 
             
              describe '#find' do
         | 
| 7 | 
            -
                 | 
| 8 | 
            -
             | 
| 9 | 
            -
             | 
| 10 | 
            -
             | 
| 11 | 
            -
                 | 
| 12 | 
            -
             | 
| 13 | 
            -
                 | 
| 14 | 
            -
             | 
| 15 | 
            -
             | 
| 16 | 
            -
             | 
| 17 | 
            -
             | 
| 18 | 
            -
                 | 
| 19 | 
            -
                # end
         | 
| 7 | 
            +
                it 'finds record' do
         | 
| 8 | 
            +
                  # user = User.find('hguzman10@gmail.com')
         | 
| 9 | 
            +
                  # expect(user.id).to eq('hguzman10@gmail.com')
         | 
| 10 | 
            +
                  # expect(user.balance).to eq(0)
         | 
| 11 | 
            +
                end
         | 
| 12 | 
            +
             | 
| 13 | 
            +
                context 'when record doesn\'t exists' do
         | 
| 14 | 
            +
                  # it 'returns empty object' do
         | 
| 15 | 
            +
                  #   user = User.find('not here')
         | 
| 16 | 
            +
                  #   expect(user).to be_nil
         | 
| 17 | 
            +
                  # end
         | 
| 18 | 
            +
                end
         | 
| 20 19 | 
             
              end
         | 
| 21 20 | 
             
            end
         | 
| @@ -0,0 +1,47 @@ | |
| 1 | 
            +
            require 'spec_helper'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            RSpec.describe DynamodbRecord::Persistence, :vcr do
         | 
| 4 | 
            +
             | 
| 5 | 
            +
              it 'saves record' do
         | 
| 6 | 
            +
                user = User.new(id: 'hguzman10@gmail.com')
         | 
| 7 | 
            +
                user.save
         | 
| 8 | 
            +
                expect(user.new_record).to be_falsy
         | 
| 9 | 
            +
                expect(user.id).to eq('hguzman10@gmail.com')
         | 
| 10 | 
            +
              end
         | 
| 11 | 
            +
             | 
| 12 | 
            +
              it 'does not overwrite existing record' do
         | 
| 13 | 
            +
                user = User.new(id: 'hguzman10@gmail.com', balance: 100)
         | 
| 14 | 
            +
                expect(user.save).to be_falsy
         | 
| 15 | 
            +
             | 
| 16 | 
            +
                user = User.find('hguzman10@gmail.com')
         | 
| 17 | 
            +
                expect(user.balance).to_not eq(100)
         | 
| 18 | 
            +
              end
         | 
| 19 | 
            +
             | 
| 20 | 
            +
              it 'updates record' do
         | 
| 21 | 
            +
                user = User.find('hguzman10@gmail.com')
         | 
| 22 | 
            +
                user.balance = 60
         | 
| 23 | 
            +
                user.save
         | 
| 24 | 
            +
                user = User.find('hguzman10@gmail.com')
         | 
| 25 | 
            +
                expect(user.balance).to eq(60)
         | 
| 26 | 
            +
              end
         | 
| 27 | 
            +
             | 
| 28 | 
            +
              describe '#destroy' do
         | 
| 29 | 
            +
                context 'when no range key' do
         | 
| 30 | 
            +
                  it 'destroys record' do
         | 
| 31 | 
            +
                    user = User.find('hguzman10@gmail.com')
         | 
| 32 | 
            +
                    user.destroy
         | 
| 33 | 
            +
                    user = User.find('hguzman10@gmail.com')
         | 
| 34 | 
            +
                    expect(user).to be_nil
         | 
| 35 | 
            +
                  end
         | 
| 36 | 
            +
                end
         | 
| 37 | 
            +
             | 
| 38 | 
            +
                context 'when there is range key' do
         | 
| 39 | 
            +
                  it 'destroys record' do
         | 
| 40 | 
            +
                    authorization = Authorization.find!('hguzman10@gmail.com', '1')
         | 
| 41 | 
            +
                    authorization.destroy
         | 
| 42 | 
            +
                    authorization = Authorization.find('hguzman10@gmail.com', '1')
         | 
| 43 | 
            +
                    expect(authorization).to be_nil
         | 
| 44 | 
            +
                  end
         | 
| 45 | 
            +
                end
         | 
| 46 | 
            +
              end
         | 
| 47 | 
            +
            end
         | 
| @@ -19,13 +19,13 @@ http_interactions: | |
| 19 19 | 
             
                  Host:
         | 
| 20 20 | 
             
                  - localhost:8000
         | 
| 21 21 | 
             
                  X-Amz-Date:
         | 
| 22 | 
            -
                  -  | 
| 22 | 
            +
                  - 20240426T004444Z
         | 
| 23 23 | 
             
                  X-Amz-Content-Sha256:
         | 
| 24 24 | 
             
                  - 7e2248df156bd85d1c08add1aaa7b84ed6041fe96165fb6879ddbb1424663802
         | 
| 25 25 | 
             
                  Authorization:
         | 
| 26 | 
            -
                  - AWS4-HMAC-SHA256 Credential=AKIAV3OBKSDM5UO5PK5A/ | 
| 26 | 
            +
                  - AWS4-HMAC-SHA256 Credential=AKIAV3OBKSDM5UO5PK5A/20240426/us-east-1/dynamodb/aws4_request,
         | 
| 27 27 | 
             
                    SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date;x-amz-target,
         | 
| 28 | 
            -
                    Signature= | 
| 28 | 
            +
                    Signature=7ad9fd348878ca27a2ea9c93bd4ca02a6cefe8a455429d1f7d4931ff8004825e
         | 
| 29 29 | 
             
                  Content-Length:
         | 
| 30 30 | 
             
                  - '62'
         | 
| 31 31 | 
             
                  Accept:
         | 
| @@ -36,9 +36,9 @@ http_interactions: | |
| 36 36 | 
             
                  message: OK
         | 
| 37 37 | 
             
                headers:
         | 
| 38 38 | 
             
                  Date:
         | 
| 39 | 
            -
                  - Fri,  | 
| 39 | 
            +
                  - Fri, 26 Apr 2024 00:44:44 GMT
         | 
| 40 40 | 
             
                  X-Amzn-Requestid:
         | 
| 41 | 
            -
                  -  | 
| 41 | 
            +
                  - 487bfb5e-a7fc-4bfd-9763-c61930591f5c
         | 
| 42 42 | 
             
                  Content-Type:
         | 
| 43 43 | 
             
                  - application/x-amz-json-1.0
         | 
| 44 44 | 
             
                  X-Amz-Crc32:
         | 
| @@ -50,5 +50,5 @@ http_interactions: | |
| 50 50 | 
             
                body:
         | 
| 51 51 | 
             
                  encoding: UTF-8
         | 
| 52 52 | 
             
                  string: '{"Item":{"balance":{"N":"0"},"id":{"S":"hguzman10@gmail.com"}}}'
         | 
| 53 | 
            -
              recorded_at: Fri,  | 
| 53 | 
            +
              recorded_at: Fri, 26 Apr 2024 00:44:44 GMT
         | 
| 54 54 | 
             
            recorded_with: VCR 6.2.0
         | 
| @@ -19,13 +19,13 @@ http_interactions: | |
| 19 19 | 
             
                  Host:
         | 
| 20 20 | 
             
                  - localhost:8000
         | 
| 21 21 | 
             
                  X-Amz-Date:
         | 
| 22 | 
            -
                  -  | 
| 22 | 
            +
                  - 20240426T004553Z
         | 
| 23 23 | 
             
                  X-Amz-Content-Sha256:
         | 
| 24 24 | 
             
                  - acbe242b07a1de9c8a8ac78119a8da7e4bf1d57c7d59ed18930d06ad600c9d6c
         | 
| 25 25 | 
             
                  Authorization:
         | 
| 26 | 
            -
                  - AWS4-HMAC-SHA256 Credential=AKIAV3OBKSDM5UO5PK5A/ | 
| 26 | 
            +
                  - AWS4-HMAC-SHA256 Credential=AKIAV3OBKSDM5UO5PK5A/20240426/us-east-1/dynamodb/aws4_request,
         | 
| 27 27 | 
             
                    SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date;x-amz-target,
         | 
| 28 | 
            -
                    Signature= | 
| 28 | 
            +
                    Signature=44e65913fed63c074acdcbfc2abde8a46e8e3d838e429f74386763ac63f32a00
         | 
| 29 29 | 
             
                  Content-Length:
         | 
| 30 30 | 
             
                  - '51'
         | 
| 31 31 | 
             
                  Accept:
         | 
| @@ -36,9 +36,9 @@ http_interactions: | |
| 36 36 | 
             
                  message: OK
         | 
| 37 37 | 
             
                headers:
         | 
| 38 38 | 
             
                  Date:
         | 
| 39 | 
            -
                  - Fri,  | 
| 39 | 
            +
                  - Fri, 26 Apr 2024 00:45:53 GMT
         | 
| 40 40 | 
             
                  X-Amzn-Requestid:
         | 
| 41 | 
            -
                  -  | 
| 41 | 
            +
                  - '091b1c6c-4b29-4901-9748-c865bae5affb'
         | 
| 42 42 | 
             
                  Content-Type:
         | 
| 43 43 | 
             
                  - application/x-amz-json-1.0
         | 
| 44 44 | 
             
                  X-Amz-Crc32:
         | 
| @@ -50,5 +50,5 @@ http_interactions: | |
| 50 50 | 
             
                body:
         | 
| 51 51 | 
             
                  encoding: UTF-8
         | 
| 52 52 | 
             
                  string: "{}"
         | 
| 53 | 
            -
              recorded_at: Fri,  | 
| 53 | 
            +
              recorded_at: Fri, 26 Apr 2024 00:45:53 GMT
         | 
| 54 54 | 
             
            recorded_with: VCR 6.2.0
         | 
| @@ -0,0 +1,156 @@ | |
| 1 | 
            +
            ---
         | 
| 2 | 
            +
            http_interactions:
         | 
| 3 | 
            +
            - request:
         | 
| 4 | 
            +
                method: post
         | 
| 5 | 
            +
                uri: http://localhost:8000/
         | 
| 6 | 
            +
                body:
         | 
| 7 | 
            +
                  encoding: UTF-8
         | 
| 8 | 
            +
                  string: '{"TableName":"users","Key":{"id":{"S":"hguzman10@gmail.com"}}}'
         | 
| 9 | 
            +
                headers:
         | 
| 10 | 
            +
                  Accept-Encoding:
         | 
| 11 | 
            +
                  - ''
         | 
| 12 | 
            +
                  Content-Type:
         | 
| 13 | 
            +
                  - application/x-amz-json-1.0
         | 
| 14 | 
            +
                  X-Amz-Target:
         | 
| 15 | 
            +
                  - DynamoDB_20120810.GetItem
         | 
| 16 | 
            +
                  User-Agent:
         | 
| 17 | 
            +
                  - aws-sdk-ruby3/3.191.3 ua/2.0 api/dynamodb#1.105.0 os/macos#20 md/x86_64 lang/ruby#3.2.3
         | 
| 18 | 
            +
                    md/3.2.3 cfg/retry-mode#legacy
         | 
| 19 | 
            +
                  Host:
         | 
| 20 | 
            +
                  - localhost:8000
         | 
| 21 | 
            +
                  X-Amz-Date:
         | 
| 22 | 
            +
                  - 20240502T003644Z
         | 
| 23 | 
            +
                  X-Amz-Content-Sha256:
         | 
| 24 | 
            +
                  - 7e2248df156bd85d1c08add1aaa7b84ed6041fe96165fb6879ddbb1424663802
         | 
| 25 | 
            +
                  Authorization:
         | 
| 26 | 
            +
                  - AWS4-HMAC-SHA256 Credential=AKIAV3OBKSDM5UO5PK5A/20240502/us-east-1/dynamodb/aws4_request,
         | 
| 27 | 
            +
                    SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date;x-amz-target,
         | 
| 28 | 
            +
                    Signature=94cc004156fe51a634d7bc47199d168f53887124cadf4eaf91af8970cd7e0751
         | 
| 29 | 
            +
                  Content-Length:
         | 
| 30 | 
            +
                  - '62'
         | 
| 31 | 
            +
                  Accept:
         | 
| 32 | 
            +
                  - "*/*"
         | 
| 33 | 
            +
              response:
         | 
| 34 | 
            +
                status:
         | 
| 35 | 
            +
                  code: 200
         | 
| 36 | 
            +
                  message: OK
         | 
| 37 | 
            +
                headers:
         | 
| 38 | 
            +
                  Date:
         | 
| 39 | 
            +
                  - Thu, 02 May 2024 00:36:44 GMT
         | 
| 40 | 
            +
                  X-Amzn-Requestid:
         | 
| 41 | 
            +
                  - 7bae8e3b-f05f-4711-809b-13029004a792
         | 
| 42 | 
            +
                  Content-Type:
         | 
| 43 | 
            +
                  - application/x-amz-json-1.0
         | 
| 44 | 
            +
                  X-Amz-Crc32:
         | 
| 45 | 
            +
                  - '3547979423'
         | 
| 46 | 
            +
                  Content-Length:
         | 
| 47 | 
            +
                  - '158'
         | 
| 48 | 
            +
                  Server:
         | 
| 49 | 
            +
                  - Jetty(11.0.17)
         | 
| 50 | 
            +
                body:
         | 
| 51 | 
            +
                  encoding: UTF-8
         | 
| 52 | 
            +
                  string: '{"Item":{"created_at":{"S":"2024-05-01T19:36:43-05:00"},"id":{"S":"hguzman10@gmail.com"},"balance":{"N":"60"},"updated_at":{"S":"2024-05-01T19:36:43-05:00"}}}'
         | 
| 53 | 
            +
              recorded_at: Thu, 02 May 2024 00:36:44 GMT
         | 
| 54 | 
            +
            - request:
         | 
| 55 | 
            +
                method: post
         | 
| 56 | 
            +
                uri: http://localhost:8000/
         | 
| 57 | 
            +
                body:
         | 
| 58 | 
            +
                  encoding: UTF-8
         | 
| 59 | 
            +
                  string: '{"TableName":"users","Key":{"id":{"S":"hguzman10@gmail.com"}}}'
         | 
| 60 | 
            +
                headers:
         | 
| 61 | 
            +
                  Accept-Encoding:
         | 
| 62 | 
            +
                  - ''
         | 
| 63 | 
            +
                  Content-Type:
         | 
| 64 | 
            +
                  - application/x-amz-json-1.0
         | 
| 65 | 
            +
                  X-Amz-Target:
         | 
| 66 | 
            +
                  - DynamoDB_20120810.DeleteItem
         | 
| 67 | 
            +
                  User-Agent:
         | 
| 68 | 
            +
                  - aws-sdk-ruby3/3.191.3 ua/2.0 api/dynamodb#1.105.0 os/macos#20 md/x86_64 lang/ruby#3.2.3
         | 
| 69 | 
            +
                    md/3.2.3 cfg/retry-mode#legacy
         | 
| 70 | 
            +
                  Host:
         | 
| 71 | 
            +
                  - localhost:8000
         | 
| 72 | 
            +
                  X-Amz-Date:
         | 
| 73 | 
            +
                  - 20240502T003644Z
         | 
| 74 | 
            +
                  X-Amz-Content-Sha256:
         | 
| 75 | 
            +
                  - 7e2248df156bd85d1c08add1aaa7b84ed6041fe96165fb6879ddbb1424663802
         | 
| 76 | 
            +
                  Authorization:
         | 
| 77 | 
            +
                  - AWS4-HMAC-SHA256 Credential=AKIAV3OBKSDM5UO5PK5A/20240502/us-east-1/dynamodb/aws4_request,
         | 
| 78 | 
            +
                    SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date;x-amz-target,
         | 
| 79 | 
            +
                    Signature=961736055c2544461f423b2aeebefa85e0c7c0f3e5cbf1f6a3734be3c29ad1c2
         | 
| 80 | 
            +
                  Content-Length:
         | 
| 81 | 
            +
                  - '62'
         | 
| 82 | 
            +
                  Accept:
         | 
| 83 | 
            +
                  - "*/*"
         | 
| 84 | 
            +
              response:
         | 
| 85 | 
            +
                status:
         | 
| 86 | 
            +
                  code: 200
         | 
| 87 | 
            +
                  message: OK
         | 
| 88 | 
            +
                headers:
         | 
| 89 | 
            +
                  Date:
         | 
| 90 | 
            +
                  - Thu, 02 May 2024 00:36:44 GMT
         | 
| 91 | 
            +
                  X-Amzn-Requestid:
         | 
| 92 | 
            +
                  - d9042a14-8c30-46a1-9ae1-3f352dff03ab
         | 
| 93 | 
            +
                  Content-Type:
         | 
| 94 | 
            +
                  - application/x-amz-json-1.0
         | 
| 95 | 
            +
                  X-Amz-Crc32:
         | 
| 96 | 
            +
                  - '2745614147'
         | 
| 97 | 
            +
                  Content-Length:
         | 
| 98 | 
            +
                  - '2'
         | 
| 99 | 
            +
                  Server:
         | 
| 100 | 
            +
                  - Jetty(11.0.17)
         | 
| 101 | 
            +
                body:
         | 
| 102 | 
            +
                  encoding: UTF-8
         | 
| 103 | 
            +
                  string: "{}"
         | 
| 104 | 
            +
              recorded_at: Thu, 02 May 2024 00:36:44 GMT
         | 
| 105 | 
            +
            - request:
         | 
| 106 | 
            +
                method: post
         | 
| 107 | 
            +
                uri: http://localhost:8000/
         | 
| 108 | 
            +
                body:
         | 
| 109 | 
            +
                  encoding: UTF-8
         | 
| 110 | 
            +
                  string: '{"TableName":"users","Key":{"id":{"S":"hguzman10@gmail.com"}}}'
         | 
| 111 | 
            +
                headers:
         | 
| 112 | 
            +
                  Accept-Encoding:
         | 
| 113 | 
            +
                  - ''
         | 
| 114 | 
            +
                  Content-Type:
         | 
| 115 | 
            +
                  - application/x-amz-json-1.0
         | 
| 116 | 
            +
                  X-Amz-Target:
         | 
| 117 | 
            +
                  - DynamoDB_20120810.GetItem
         | 
| 118 | 
            +
                  User-Agent:
         | 
| 119 | 
            +
                  - aws-sdk-ruby3/3.191.3 ua/2.0 api/dynamodb#1.105.0 os/macos#20 md/x86_64 lang/ruby#3.2.3
         | 
| 120 | 
            +
                    md/3.2.3 cfg/retry-mode#legacy
         | 
| 121 | 
            +
                  Host:
         | 
| 122 | 
            +
                  - localhost:8000
         | 
| 123 | 
            +
                  X-Amz-Date:
         | 
| 124 | 
            +
                  - 20240502T003644Z
         | 
| 125 | 
            +
                  X-Amz-Content-Sha256:
         | 
| 126 | 
            +
                  - 7e2248df156bd85d1c08add1aaa7b84ed6041fe96165fb6879ddbb1424663802
         | 
| 127 | 
            +
                  Authorization:
         | 
| 128 | 
            +
                  - AWS4-HMAC-SHA256 Credential=AKIAV3OBKSDM5UO5PK5A/20240502/us-east-1/dynamodb/aws4_request,
         | 
| 129 | 
            +
                    SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date;x-amz-target,
         | 
| 130 | 
            +
                    Signature=94cc004156fe51a634d7bc47199d168f53887124cadf4eaf91af8970cd7e0751
         | 
| 131 | 
            +
                  Content-Length:
         | 
| 132 | 
            +
                  - '62'
         | 
| 133 | 
            +
                  Accept:
         | 
| 134 | 
            +
                  - "*/*"
         | 
| 135 | 
            +
              response:
         | 
| 136 | 
            +
                status:
         | 
| 137 | 
            +
                  code: 200
         | 
| 138 | 
            +
                  message: OK
         | 
| 139 | 
            +
                headers:
         | 
| 140 | 
            +
                  Date:
         | 
| 141 | 
            +
                  - Thu, 02 May 2024 00:36:44 GMT
         | 
| 142 | 
            +
                  X-Amzn-Requestid:
         | 
| 143 | 
            +
                  - d8e23373-1aee-4727-839e-fed721efdc77
         | 
| 144 | 
            +
                  Content-Type:
         | 
| 145 | 
            +
                  - application/x-amz-json-1.0
         | 
| 146 | 
            +
                  X-Amz-Crc32:
         | 
| 147 | 
            +
                  - '2745614147'
         | 
| 148 | 
            +
                  Content-Length:
         | 
| 149 | 
            +
                  - '2'
         | 
| 150 | 
            +
                  Server:
         | 
| 151 | 
            +
                  - Jetty(11.0.17)
         | 
| 152 | 
            +
                body:
         | 
| 153 | 
            +
                  encoding: UTF-8
         | 
| 154 | 
            +
                  string: "{}"
         | 
| 155 | 
            +
              recorded_at: Thu, 02 May 2024 00:36:44 GMT
         | 
| 156 | 
            +
            recorded_with: VCR 6.2.0
         | 
| @@ -0,0 +1,156 @@ | |
| 1 | 
            +
            ---
         | 
| 2 | 
            +
            http_interactions:
         | 
| 3 | 
            +
            - request:
         | 
| 4 | 
            +
                method: post
         | 
| 5 | 
            +
                uri: http://localhost:8000/
         | 
| 6 | 
            +
                body:
         | 
| 7 | 
            +
                  encoding: UTF-8
         | 
| 8 | 
            +
                  string: '{"TableName":"authorizations","Key":{"user_id":{"S":"hguzman10@gmail.com"},"service_id":{"S":"1"}}}'
         | 
| 9 | 
            +
                headers:
         | 
| 10 | 
            +
                  Accept-Encoding:
         | 
| 11 | 
            +
                  - ''
         | 
| 12 | 
            +
                  Content-Type:
         | 
| 13 | 
            +
                  - application/x-amz-json-1.0
         | 
| 14 | 
            +
                  X-Amz-Target:
         | 
| 15 | 
            +
                  - DynamoDB_20120810.GetItem
         | 
| 16 | 
            +
                  User-Agent:
         | 
| 17 | 
            +
                  - aws-sdk-ruby3/3.191.3 ua/2.0 api/dynamodb#1.105.0 os/macos#20 md/x86_64 lang/ruby#3.2.3
         | 
| 18 | 
            +
                    md/3.2.3 cfg/retry-mode#legacy
         | 
| 19 | 
            +
                  Host:
         | 
| 20 | 
            +
                  - localhost:8000
         | 
| 21 | 
            +
                  X-Amz-Date:
         | 
| 22 | 
            +
                  - 20240502T001527Z
         | 
| 23 | 
            +
                  X-Amz-Content-Sha256:
         | 
| 24 | 
            +
                  - 904e20d3b7d573308942eb45e345aed8a0d28331d9087eb40a19412554c62258
         | 
| 25 | 
            +
                  Authorization:
         | 
| 26 | 
            +
                  - AWS4-HMAC-SHA256 Credential=AKIAV3OBKSDM5UO5PK5A/20240502/us-east-1/dynamodb/aws4_request,
         | 
| 27 | 
            +
                    SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date;x-amz-target,
         | 
| 28 | 
            +
                    Signature=a27d2463aed9f0c4f86c0db83f3d99d3e15b3482533e4d3c4430fda0de0e1312
         | 
| 29 | 
            +
                  Content-Length:
         | 
| 30 | 
            +
                  - '99'
         | 
| 31 | 
            +
                  Accept:
         | 
| 32 | 
            +
                  - "*/*"
         | 
| 33 | 
            +
              response:
         | 
| 34 | 
            +
                status:
         | 
| 35 | 
            +
                  code: 200
         | 
| 36 | 
            +
                  message: OK
         | 
| 37 | 
            +
                headers:
         | 
| 38 | 
            +
                  Date:
         | 
| 39 | 
            +
                  - Thu, 02 May 2024 00:15:27 GMT
         | 
| 40 | 
            +
                  X-Amzn-Requestid:
         | 
| 41 | 
            +
                  - b0ad8800-588e-433b-b314-539bd7598d91
         | 
| 42 | 
            +
                  Content-Type:
         | 
| 43 | 
            +
                  - application/x-amz-json-1.0
         | 
| 44 | 
            +
                  X-Amz-Crc32:
         | 
| 45 | 
            +
                  - '2017503589'
         | 
| 46 | 
            +
                  Content-Length:
         | 
| 47 | 
            +
                  - '71'
         | 
| 48 | 
            +
                  Server:
         | 
| 49 | 
            +
                  - Jetty(11.0.17)
         | 
| 50 | 
            +
                body:
         | 
| 51 | 
            +
                  encoding: UTF-8
         | 
| 52 | 
            +
                  string: '{"Item":{"user_id":{"S":"hguzman10@gmail.com"},"service_id":{"S":"1"}}}'
         | 
| 53 | 
            +
              recorded_at: Thu, 02 May 2024 00:15:27 GMT
         | 
| 54 | 
            +
            - request:
         | 
| 55 | 
            +
                method: post
         | 
| 56 | 
            +
                uri: http://localhost:8000/
         | 
| 57 | 
            +
                body:
         | 
| 58 | 
            +
                  encoding: UTF-8
         | 
| 59 | 
            +
                  string: '{"TableName":"authorizations","Key":{"user_id":{"S":"hguzman10@gmail.com"},"service_id":{"S":"1"}}}'
         | 
| 60 | 
            +
                headers:
         | 
| 61 | 
            +
                  Accept-Encoding:
         | 
| 62 | 
            +
                  - ''
         | 
| 63 | 
            +
                  Content-Type:
         | 
| 64 | 
            +
                  - application/x-amz-json-1.0
         | 
| 65 | 
            +
                  X-Amz-Target:
         | 
| 66 | 
            +
                  - DynamoDB_20120810.DeleteItem
         | 
| 67 | 
            +
                  User-Agent:
         | 
| 68 | 
            +
                  - aws-sdk-ruby3/3.191.3 ua/2.0 api/dynamodb#1.105.0 os/macos#20 md/x86_64 lang/ruby#3.2.3
         | 
| 69 | 
            +
                    md/3.2.3 cfg/retry-mode#legacy
         | 
| 70 | 
            +
                  Host:
         | 
| 71 | 
            +
                  - localhost:8000
         | 
| 72 | 
            +
                  X-Amz-Date:
         | 
| 73 | 
            +
                  - 20240502T001527Z
         | 
| 74 | 
            +
                  X-Amz-Content-Sha256:
         | 
| 75 | 
            +
                  - 904e20d3b7d573308942eb45e345aed8a0d28331d9087eb40a19412554c62258
         | 
| 76 | 
            +
                  Authorization:
         | 
| 77 | 
            +
                  - AWS4-HMAC-SHA256 Credential=AKIAV3OBKSDM5UO5PK5A/20240502/us-east-1/dynamodb/aws4_request,
         | 
| 78 | 
            +
                    SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date;x-amz-target,
         | 
| 79 | 
            +
                    Signature=8b44cb46b1680b538fe9455591b2a9cc8d28fd93ac35a154afed681e468130fd
         | 
| 80 | 
            +
                  Content-Length:
         | 
| 81 | 
            +
                  - '99'
         | 
| 82 | 
            +
                  Accept:
         | 
| 83 | 
            +
                  - "*/*"
         | 
| 84 | 
            +
              response:
         | 
| 85 | 
            +
                status:
         | 
| 86 | 
            +
                  code: 200
         | 
| 87 | 
            +
                  message: OK
         | 
| 88 | 
            +
                headers:
         | 
| 89 | 
            +
                  Date:
         | 
| 90 | 
            +
                  - Thu, 02 May 2024 00:15:27 GMT
         | 
| 91 | 
            +
                  X-Amzn-Requestid:
         | 
| 92 | 
            +
                  - '016797fb-ab5f-4574-88f3-7e826cac42df'
         | 
| 93 | 
            +
                  Content-Type:
         | 
| 94 | 
            +
                  - application/x-amz-json-1.0
         | 
| 95 | 
            +
                  X-Amz-Crc32:
         | 
| 96 | 
            +
                  - '2745614147'
         | 
| 97 | 
            +
                  Content-Length:
         | 
| 98 | 
            +
                  - '2'
         | 
| 99 | 
            +
                  Server:
         | 
| 100 | 
            +
                  - Jetty(11.0.17)
         | 
| 101 | 
            +
                body:
         | 
| 102 | 
            +
                  encoding: UTF-8
         | 
| 103 | 
            +
                  string: "{}"
         | 
| 104 | 
            +
              recorded_at: Thu, 02 May 2024 00:15:27 GMT
         | 
| 105 | 
            +
            - request:
         | 
| 106 | 
            +
                method: post
         | 
| 107 | 
            +
                uri: http://localhost:8000/
         | 
| 108 | 
            +
                body:
         | 
| 109 | 
            +
                  encoding: UTF-8
         | 
| 110 | 
            +
                  string: '{"TableName":"authorizations","Key":{"user_id":{"S":"hguzman10@gmail.com"},"service_id":{"S":"1"}}}'
         | 
| 111 | 
            +
                headers:
         | 
| 112 | 
            +
                  Accept-Encoding:
         | 
| 113 | 
            +
                  - ''
         | 
| 114 | 
            +
                  Content-Type:
         | 
| 115 | 
            +
                  - application/x-amz-json-1.0
         | 
| 116 | 
            +
                  X-Amz-Target:
         | 
| 117 | 
            +
                  - DynamoDB_20120810.GetItem
         | 
| 118 | 
            +
                  User-Agent:
         | 
| 119 | 
            +
                  - aws-sdk-ruby3/3.191.3 ua/2.0 api/dynamodb#1.105.0 os/macos#20 md/x86_64 lang/ruby#3.2.3
         | 
| 120 | 
            +
                    md/3.2.3 cfg/retry-mode#legacy
         | 
| 121 | 
            +
                  Host:
         | 
| 122 | 
            +
                  - localhost:8000
         | 
| 123 | 
            +
                  X-Amz-Date:
         | 
| 124 | 
            +
                  - 20240502T001527Z
         | 
| 125 | 
            +
                  X-Amz-Content-Sha256:
         | 
| 126 | 
            +
                  - 904e20d3b7d573308942eb45e345aed8a0d28331d9087eb40a19412554c62258
         | 
| 127 | 
            +
                  Authorization:
         | 
| 128 | 
            +
                  - AWS4-HMAC-SHA256 Credential=AKIAV3OBKSDM5UO5PK5A/20240502/us-east-1/dynamodb/aws4_request,
         | 
| 129 | 
            +
                    SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date;x-amz-target,
         | 
| 130 | 
            +
                    Signature=a27d2463aed9f0c4f86c0db83f3d99d3e15b3482533e4d3c4430fda0de0e1312
         | 
| 131 | 
            +
                  Content-Length:
         | 
| 132 | 
            +
                  - '99'
         | 
| 133 | 
            +
                  Accept:
         | 
| 134 | 
            +
                  - "*/*"
         | 
| 135 | 
            +
              response:
         | 
| 136 | 
            +
                status:
         | 
| 137 | 
            +
                  code: 200
         | 
| 138 | 
            +
                  message: OK
         | 
| 139 | 
            +
                headers:
         | 
| 140 | 
            +
                  Date:
         | 
| 141 | 
            +
                  - Thu, 02 May 2024 00:15:27 GMT
         | 
| 142 | 
            +
                  X-Amzn-Requestid:
         | 
| 143 | 
            +
                  - f7ad1c7f-8266-4da1-8355-7200d06d4f97
         | 
| 144 | 
            +
                  Content-Type:
         | 
| 145 | 
            +
                  - application/x-amz-json-1.0
         | 
| 146 | 
            +
                  X-Amz-Crc32:
         | 
| 147 | 
            +
                  - '2745614147'
         | 
| 148 | 
            +
                  Content-Length:
         | 
| 149 | 
            +
                  - '2'
         | 
| 150 | 
            +
                  Server:
         | 
| 151 | 
            +
                  - Jetty(11.0.17)
         | 
| 152 | 
            +
                body:
         | 
| 153 | 
            +
                  encoding: UTF-8
         | 
| 154 | 
            +
                  string: "{}"
         | 
| 155 | 
            +
              recorded_at: Thu, 02 May 2024 00:15:27 GMT
         | 
| 156 | 
            +
            recorded_with: VCR 6.2.0
         | 
    
        data/spec/fixtures/vcr_cassettes/DynamodbRecord_Persistence/does_not_overwrite_existing_record.yml
    ADDED
    
    | @@ -0,0 +1,104 @@ | |
| 1 | 
            +
            ---
         | 
| 2 | 
            +
            http_interactions:
         | 
| 3 | 
            +
            - request:
         | 
| 4 | 
            +
                method: post
         | 
| 5 | 
            +
                uri: http://localhost:8000/
         | 
| 6 | 
            +
                body:
         | 
| 7 | 
            +
                  encoding: UTF-8
         | 
| 8 | 
            +
                  string: '{"TableName":"users","ConditionExpression":"id <> :s","ExpressionAttributeValues":{":s":{"S":"hguzman10@gmail.com"}},"Item":{"balance":{"N":"100"},"id":{"S":"hguzman10@gmail.com"},"created_at":{"S":"2024-05-01T19:36:43-05:00"},"updated_at":{"S":"2024-05-01T19:36:43-05:00"}}}'
         | 
| 9 | 
            +
                headers:
         | 
| 10 | 
            +
                  Accept-Encoding:
         | 
| 11 | 
            +
                  - ''
         | 
| 12 | 
            +
                  Content-Type:
         | 
| 13 | 
            +
                  - application/x-amz-json-1.0
         | 
| 14 | 
            +
                  X-Amz-Target:
         | 
| 15 | 
            +
                  - DynamoDB_20120810.PutItem
         | 
| 16 | 
            +
                  User-Agent:
         | 
| 17 | 
            +
                  - aws-sdk-ruby3/3.191.3 ua/2.0 api/dynamodb#1.105.0 os/macos#20 md/x86_64 lang/ruby#3.2.3
         | 
| 18 | 
            +
                    md/3.2.3 cfg/retry-mode#legacy
         | 
| 19 | 
            +
                  Host:
         | 
| 20 | 
            +
                  - localhost:8000
         | 
| 21 | 
            +
                  X-Amz-Date:
         | 
| 22 | 
            +
                  - 20240502T003643Z
         | 
| 23 | 
            +
                  X-Amz-Content-Sha256:
         | 
| 24 | 
            +
                  - 6ba894a3f3d7e47c03481928aa642e796e2e8b11c8f7a85324b66918fabe67fb
         | 
| 25 | 
            +
                  Authorization:
         | 
| 26 | 
            +
                  - AWS4-HMAC-SHA256 Credential=AKIAV3OBKSDM5UO5PK5A/20240502/us-east-1/dynamodb/aws4_request,
         | 
| 27 | 
            +
                    SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date;x-amz-target,
         | 
| 28 | 
            +
                    Signature=ecc9987a544fe53aa846cf53473b4438e6c7ca89b3db1d77cc163d28965c0d34
         | 
| 29 | 
            +
                  Content-Length:
         | 
| 30 | 
            +
                  - '275'
         | 
| 31 | 
            +
                  Accept:
         | 
| 32 | 
            +
                  - "*/*"
         | 
| 33 | 
            +
              response:
         | 
| 34 | 
            +
                status:
         | 
| 35 | 
            +
                  code: 400
         | 
| 36 | 
            +
                  message: Bad Request
         | 
| 37 | 
            +
                headers:
         | 
| 38 | 
            +
                  Date:
         | 
| 39 | 
            +
                  - Thu, 02 May 2024 00:36:43 GMT
         | 
| 40 | 
            +
                  X-Amzn-Requestid:
         | 
| 41 | 
            +
                  - abb2b185-4ffa-4b9e-b7b9-73a56fe18b8f
         | 
| 42 | 
            +
                  Content-Type:
         | 
| 43 | 
            +
                  - application/x-amz-json-1.0
         | 
| 44 | 
            +
                  Content-Length:
         | 
| 45 | 
            +
                  - '120'
         | 
| 46 | 
            +
                  Server:
         | 
| 47 | 
            +
                  - Jetty(11.0.17)
         | 
| 48 | 
            +
                body:
         | 
| 49 | 
            +
                  encoding: UTF-8
         | 
| 50 | 
            +
                  string: '{"__type":"com.amazonaws.dynamodb.v20120810#ConditionalCheckFailedException","Message":"The
         | 
| 51 | 
            +
                    conditional request failed"}'
         | 
| 52 | 
            +
              recorded_at: Thu, 02 May 2024 00:36:43 GMT
         | 
| 53 | 
            +
            - request:
         | 
| 54 | 
            +
                method: post
         | 
| 55 | 
            +
                uri: http://localhost:8000/
         | 
| 56 | 
            +
                body:
         | 
| 57 | 
            +
                  encoding: UTF-8
         | 
| 58 | 
            +
                  string: '{"TableName":"users","Key":{"id":{"S":"hguzman10@gmail.com"}}}'
         | 
| 59 | 
            +
                headers:
         | 
| 60 | 
            +
                  Accept-Encoding:
         | 
| 61 | 
            +
                  - ''
         | 
| 62 | 
            +
                  Content-Type:
         | 
| 63 | 
            +
                  - application/x-amz-json-1.0
         | 
| 64 | 
            +
                  X-Amz-Target:
         | 
| 65 | 
            +
                  - DynamoDB_20120810.GetItem
         | 
| 66 | 
            +
                  User-Agent:
         | 
| 67 | 
            +
                  - aws-sdk-ruby3/3.191.3 ua/2.0 api/dynamodb#1.105.0 os/macos#20 md/x86_64 lang/ruby#3.2.3
         | 
| 68 | 
            +
                    md/3.2.3 cfg/retry-mode#legacy
         | 
| 69 | 
            +
                  Host:
         | 
| 70 | 
            +
                  - localhost:8000
         | 
| 71 | 
            +
                  X-Amz-Date:
         | 
| 72 | 
            +
                  - 20240502T003643Z
         | 
| 73 | 
            +
                  X-Amz-Content-Sha256:
         | 
| 74 | 
            +
                  - 7e2248df156bd85d1c08add1aaa7b84ed6041fe96165fb6879ddbb1424663802
         | 
| 75 | 
            +
                  Authorization:
         | 
| 76 | 
            +
                  - AWS4-HMAC-SHA256 Credential=AKIAV3OBKSDM5UO5PK5A/20240502/us-east-1/dynamodb/aws4_request,
         | 
| 77 | 
            +
                    SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date;x-amz-target,
         | 
| 78 | 
            +
                    Signature=e61f5c53269131bf5f985bfbe1385615456dcedad7ae5fce0fe1ce0a4e854705
         | 
| 79 | 
            +
                  Content-Length:
         | 
| 80 | 
            +
                  - '62'
         | 
| 81 | 
            +
                  Accept:
         | 
| 82 | 
            +
                  - "*/*"
         | 
| 83 | 
            +
              response:
         | 
| 84 | 
            +
                status:
         | 
| 85 | 
            +
                  code: 200
         | 
| 86 | 
            +
                  message: OK
         | 
| 87 | 
            +
                headers:
         | 
| 88 | 
            +
                  Date:
         | 
| 89 | 
            +
                  - Thu, 02 May 2024 00:36:43 GMT
         | 
| 90 | 
            +
                  X-Amzn-Requestid:
         | 
| 91 | 
            +
                  - 05b8fc5c-d523-4191-bac0-d31621e3857c
         | 
| 92 | 
            +
                  Content-Type:
         | 
| 93 | 
            +
                  - application/x-amz-json-1.0
         | 
| 94 | 
            +
                  X-Amz-Crc32:
         | 
| 95 | 
            +
                  - '1030740054'
         | 
| 96 | 
            +
                  Content-Length:
         | 
| 97 | 
            +
                  - '157'
         | 
| 98 | 
            +
                  Server:
         | 
| 99 | 
            +
                  - Jetty(11.0.17)
         | 
| 100 | 
            +
                body:
         | 
| 101 | 
            +
                  encoding: UTF-8
         | 
| 102 | 
            +
                  string: '{"Item":{"created_at":{"S":"2024-05-01T19:36:43-05:00"},"id":{"S":"hguzman10@gmail.com"},"balance":{"N":"0"},"updated_at":{"S":"2024-05-01T19:36:43-05:00"}}}'
         | 
| 103 | 
            +
              recorded_at: Thu, 02 May 2024 00:36:43 GMT
         | 
| 104 | 
            +
            recorded_with: VCR 6.2.0
         | 
| @@ -0,0 +1,54 @@ | |
| 1 | 
            +
            ---
         | 
| 2 | 
            +
            http_interactions:
         | 
| 3 | 
            +
            - request:
         | 
| 4 | 
            +
                method: post
         | 
| 5 | 
            +
                uri: http://localhost:8000/
         | 
| 6 | 
            +
                body:
         | 
| 7 | 
            +
                  encoding: UTF-8
         | 
| 8 | 
            +
                  string: '{"TableName":"users","ConditionExpression":"id <> :s","ExpressionAttributeValues":{":s":{"S":"hguzman10@gmail.com"}},"Item":{"balance":{"N":"0"},"id":{"S":"hguzman10@gmail.com"},"created_at":{"S":"2024-05-01T19:36:43-05:00"},"updated_at":{"S":"2024-05-01T19:36:43-05:00"}}}'
         | 
| 9 | 
            +
                headers:
         | 
| 10 | 
            +
                  Accept-Encoding:
         | 
| 11 | 
            +
                  - ''
         | 
| 12 | 
            +
                  Content-Type:
         | 
| 13 | 
            +
                  - application/x-amz-json-1.0
         | 
| 14 | 
            +
                  X-Amz-Target:
         | 
| 15 | 
            +
                  - DynamoDB_20120810.PutItem
         | 
| 16 | 
            +
                  User-Agent:
         | 
| 17 | 
            +
                  - aws-sdk-ruby3/3.191.3 ua/2.0 api/dynamodb#1.105.0 os/macos#20 md/x86_64 lang/ruby#3.2.3
         | 
| 18 | 
            +
                    md/3.2.3 cfg/retry-mode#legacy
         | 
| 19 | 
            +
                  Host:
         | 
| 20 | 
            +
                  - localhost:8000
         | 
| 21 | 
            +
                  X-Amz-Date:
         | 
| 22 | 
            +
                  - 20240502T003643Z
         | 
| 23 | 
            +
                  X-Amz-Content-Sha256:
         | 
| 24 | 
            +
                  - a6814143d7653f7f2d9abb6d2cf7c7b12ba0b621092b359971c44569d1bc2778
         | 
| 25 | 
            +
                  Authorization:
         | 
| 26 | 
            +
                  - AWS4-HMAC-SHA256 Credential=AKIAV3OBKSDM5UO5PK5A/20240502/us-east-1/dynamodb/aws4_request,
         | 
| 27 | 
            +
                    SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date;x-amz-target,
         | 
| 28 | 
            +
                    Signature=28275abed7119af00065965863f46b56a8f8db07e4ac789d86411f1f2c44155c
         | 
| 29 | 
            +
                  Content-Length:
         | 
| 30 | 
            +
                  - '273'
         | 
| 31 | 
            +
                  Accept:
         | 
| 32 | 
            +
                  - "*/*"
         | 
| 33 | 
            +
              response:
         | 
| 34 | 
            +
                status:
         | 
| 35 | 
            +
                  code: 200
         | 
| 36 | 
            +
                  message: OK
         | 
| 37 | 
            +
                headers:
         | 
| 38 | 
            +
                  Date:
         | 
| 39 | 
            +
                  - Thu, 02 May 2024 00:36:43 GMT
         | 
| 40 | 
            +
                  X-Amzn-Requestid:
         | 
| 41 | 
            +
                  - c07e3cbf-e2be-4eb3-afb6-dad85bcdbe3f
         | 
| 42 | 
            +
                  Content-Type:
         | 
| 43 | 
            +
                  - application/x-amz-json-1.0
         | 
| 44 | 
            +
                  X-Amz-Crc32:
         | 
| 45 | 
            +
                  - '2745614147'
         | 
| 46 | 
            +
                  Content-Length:
         | 
| 47 | 
            +
                  - '2'
         | 
| 48 | 
            +
                  Server:
         | 
| 49 | 
            +
                  - Jetty(11.0.17)
         | 
| 50 | 
            +
                body:
         | 
| 51 | 
            +
                  encoding: UTF-8
         | 
| 52 | 
            +
                  string: "{}"
         | 
| 53 | 
            +
              recorded_at: Thu, 02 May 2024 00:36:43 GMT
         | 
| 54 | 
            +
            recorded_with: VCR 6.2.0
         | 
| @@ -0,0 +1,156 @@ | |
| 1 | 
            +
            ---
         | 
| 2 | 
            +
            http_interactions:
         | 
| 3 | 
            +
            - request:
         | 
| 4 | 
            +
                method: post
         | 
| 5 | 
            +
                uri: http://localhost:8000/
         | 
| 6 | 
            +
                body:
         | 
| 7 | 
            +
                  encoding: UTF-8
         | 
| 8 | 
            +
                  string: '{"TableName":"users","Key":{"id":{"S":"hguzman10@gmail.com"}}}'
         | 
| 9 | 
            +
                headers:
         | 
| 10 | 
            +
                  Accept-Encoding:
         | 
| 11 | 
            +
                  - ''
         | 
| 12 | 
            +
                  Content-Type:
         | 
| 13 | 
            +
                  - application/x-amz-json-1.0
         | 
| 14 | 
            +
                  X-Amz-Target:
         | 
| 15 | 
            +
                  - DynamoDB_20120810.GetItem
         | 
| 16 | 
            +
                  User-Agent:
         | 
| 17 | 
            +
                  - aws-sdk-ruby3/3.191.3 ua/2.0 api/dynamodb#1.105.0 os/macos#20 md/x86_64 lang/ruby#3.2.3
         | 
| 18 | 
            +
                    md/3.2.3 cfg/retry-mode#legacy
         | 
| 19 | 
            +
                  Host:
         | 
| 20 | 
            +
                  - localhost:8000
         | 
| 21 | 
            +
                  X-Amz-Date:
         | 
| 22 | 
            +
                  - 20240502T003643Z
         | 
| 23 | 
            +
                  X-Amz-Content-Sha256:
         | 
| 24 | 
            +
                  - 7e2248df156bd85d1c08add1aaa7b84ed6041fe96165fb6879ddbb1424663802
         | 
| 25 | 
            +
                  Authorization:
         | 
| 26 | 
            +
                  - AWS4-HMAC-SHA256 Credential=AKIAV3OBKSDM5UO5PK5A/20240502/us-east-1/dynamodb/aws4_request,
         | 
| 27 | 
            +
                    SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date;x-amz-target,
         | 
| 28 | 
            +
                    Signature=e61f5c53269131bf5f985bfbe1385615456dcedad7ae5fce0fe1ce0a4e854705
         | 
| 29 | 
            +
                  Content-Length:
         | 
| 30 | 
            +
                  - '62'
         | 
| 31 | 
            +
                  Accept:
         | 
| 32 | 
            +
                  - "*/*"
         | 
| 33 | 
            +
              response:
         | 
| 34 | 
            +
                status:
         | 
| 35 | 
            +
                  code: 200
         | 
| 36 | 
            +
                  message: OK
         | 
| 37 | 
            +
                headers:
         | 
| 38 | 
            +
                  Date:
         | 
| 39 | 
            +
                  - Thu, 02 May 2024 00:36:43 GMT
         | 
| 40 | 
            +
                  X-Amzn-Requestid:
         | 
| 41 | 
            +
                  - ecb90d9f-4d44-400e-82f0-20214b690e4c
         | 
| 42 | 
            +
                  Content-Type:
         | 
| 43 | 
            +
                  - application/x-amz-json-1.0
         | 
| 44 | 
            +
                  X-Amz-Crc32:
         | 
| 45 | 
            +
                  - '1030740054'
         | 
| 46 | 
            +
                  Content-Length:
         | 
| 47 | 
            +
                  - '157'
         | 
| 48 | 
            +
                  Server:
         | 
| 49 | 
            +
                  - Jetty(11.0.17)
         | 
| 50 | 
            +
                body:
         | 
| 51 | 
            +
                  encoding: UTF-8
         | 
| 52 | 
            +
                  string: '{"Item":{"created_at":{"S":"2024-05-01T19:36:43-05:00"},"id":{"S":"hguzman10@gmail.com"},"balance":{"N":"0"},"updated_at":{"S":"2024-05-01T19:36:43-05:00"}}}'
         | 
| 53 | 
            +
              recorded_at: Thu, 02 May 2024 00:36:43 GMT
         | 
| 54 | 
            +
            - request:
         | 
| 55 | 
            +
                method: post
         | 
| 56 | 
            +
                uri: http://localhost:8000/
         | 
| 57 | 
            +
                body:
         | 
| 58 | 
            +
                  encoding: UTF-8
         | 
| 59 | 
            +
                  string: '{"TableName":"users","Item":{"balance":{"N":"60"},"created_at":{"S":"2024-05-01T19:36:43-05:00"},"id":{"S":"hguzman10@gmail.com"},"updated_at":{"S":"2024-05-01T19:36:43-05:00"}}}'
         | 
| 60 | 
            +
                headers:
         | 
| 61 | 
            +
                  Accept-Encoding:
         | 
| 62 | 
            +
                  - ''
         | 
| 63 | 
            +
                  Content-Type:
         | 
| 64 | 
            +
                  - application/x-amz-json-1.0
         | 
| 65 | 
            +
                  X-Amz-Target:
         | 
| 66 | 
            +
                  - DynamoDB_20120810.PutItem
         | 
| 67 | 
            +
                  User-Agent:
         | 
| 68 | 
            +
                  - aws-sdk-ruby3/3.191.3 ua/2.0 api/dynamodb#1.105.0 os/macos#20 md/x86_64 lang/ruby#3.2.3
         | 
| 69 | 
            +
                    md/3.2.3 cfg/retry-mode#legacy
         | 
| 70 | 
            +
                  Host:
         | 
| 71 | 
            +
                  - localhost:8000
         | 
| 72 | 
            +
                  X-Amz-Date:
         | 
| 73 | 
            +
                  - 20240502T003643Z
         | 
| 74 | 
            +
                  X-Amz-Content-Sha256:
         | 
| 75 | 
            +
                  - bce2e7f8fe409b9ee303c60086f066bdcd1046f72262b55b295dec463d74e106
         | 
| 76 | 
            +
                  Authorization:
         | 
| 77 | 
            +
                  - AWS4-HMAC-SHA256 Credential=AKIAV3OBKSDM5UO5PK5A/20240502/us-east-1/dynamodb/aws4_request,
         | 
| 78 | 
            +
                    SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date;x-amz-target,
         | 
| 79 | 
            +
                    Signature=66196ff2d65820f4c27935312b8b6a4cbe87288ffceb59025123e77b342f37cf
         | 
| 80 | 
            +
                  Content-Length:
         | 
| 81 | 
            +
                  - '178'
         | 
| 82 | 
            +
                  Accept:
         | 
| 83 | 
            +
                  - "*/*"
         | 
| 84 | 
            +
              response:
         | 
| 85 | 
            +
                status:
         | 
| 86 | 
            +
                  code: 200
         | 
| 87 | 
            +
                  message: OK
         | 
| 88 | 
            +
                headers:
         | 
| 89 | 
            +
                  Date:
         | 
| 90 | 
            +
                  - Thu, 02 May 2024 00:36:43 GMT
         | 
| 91 | 
            +
                  X-Amzn-Requestid:
         | 
| 92 | 
            +
                  - 56298a7a-ad76-45f8-855f-883653ec8f06
         | 
| 93 | 
            +
                  Content-Type:
         | 
| 94 | 
            +
                  - application/x-amz-json-1.0
         | 
| 95 | 
            +
                  X-Amz-Crc32:
         | 
| 96 | 
            +
                  - '2745614147'
         | 
| 97 | 
            +
                  Content-Length:
         | 
| 98 | 
            +
                  - '2'
         | 
| 99 | 
            +
                  Server:
         | 
| 100 | 
            +
                  - Jetty(11.0.17)
         | 
| 101 | 
            +
                body:
         | 
| 102 | 
            +
                  encoding: UTF-8
         | 
| 103 | 
            +
                  string: "{}"
         | 
| 104 | 
            +
              recorded_at: Thu, 02 May 2024 00:36:43 GMT
         | 
| 105 | 
            +
            - request:
         | 
| 106 | 
            +
                method: post
         | 
| 107 | 
            +
                uri: http://localhost:8000/
         | 
| 108 | 
            +
                body:
         | 
| 109 | 
            +
                  encoding: UTF-8
         | 
| 110 | 
            +
                  string: '{"TableName":"users","Key":{"id":{"S":"hguzman10@gmail.com"}}}'
         | 
| 111 | 
            +
                headers:
         | 
| 112 | 
            +
                  Accept-Encoding:
         | 
| 113 | 
            +
                  - ''
         | 
| 114 | 
            +
                  Content-Type:
         | 
| 115 | 
            +
                  - application/x-amz-json-1.0
         | 
| 116 | 
            +
                  X-Amz-Target:
         | 
| 117 | 
            +
                  - DynamoDB_20120810.GetItem
         | 
| 118 | 
            +
                  User-Agent:
         | 
| 119 | 
            +
                  - aws-sdk-ruby3/3.191.3 ua/2.0 api/dynamodb#1.105.0 os/macos#20 md/x86_64 lang/ruby#3.2.3
         | 
| 120 | 
            +
                    md/3.2.3 cfg/retry-mode#legacy
         | 
| 121 | 
            +
                  Host:
         | 
| 122 | 
            +
                  - localhost:8000
         | 
| 123 | 
            +
                  X-Amz-Date:
         | 
| 124 | 
            +
                  - 20240502T003643Z
         | 
| 125 | 
            +
                  X-Amz-Content-Sha256:
         | 
| 126 | 
            +
                  - 7e2248df156bd85d1c08add1aaa7b84ed6041fe96165fb6879ddbb1424663802
         | 
| 127 | 
            +
                  Authorization:
         | 
| 128 | 
            +
                  - AWS4-HMAC-SHA256 Credential=AKIAV3OBKSDM5UO5PK5A/20240502/us-east-1/dynamodb/aws4_request,
         | 
| 129 | 
            +
                    SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date;x-amz-target,
         | 
| 130 | 
            +
                    Signature=e61f5c53269131bf5f985bfbe1385615456dcedad7ae5fce0fe1ce0a4e854705
         | 
| 131 | 
            +
                  Content-Length:
         | 
| 132 | 
            +
                  - '62'
         | 
| 133 | 
            +
                  Accept:
         | 
| 134 | 
            +
                  - "*/*"
         | 
| 135 | 
            +
              response:
         | 
| 136 | 
            +
                status:
         | 
| 137 | 
            +
                  code: 200
         | 
| 138 | 
            +
                  message: OK
         | 
| 139 | 
            +
                headers:
         | 
| 140 | 
            +
                  Date:
         | 
| 141 | 
            +
                  - Thu, 02 May 2024 00:36:43 GMT
         | 
| 142 | 
            +
                  X-Amzn-Requestid:
         | 
| 143 | 
            +
                  - 8ca63cc3-80f7-4e9e-9fa1-f891ed851802
         | 
| 144 | 
            +
                  Content-Type:
         | 
| 145 | 
            +
                  - application/x-amz-json-1.0
         | 
| 146 | 
            +
                  X-Amz-Crc32:
         | 
| 147 | 
            +
                  - '3547979423'
         | 
| 148 | 
            +
                  Content-Length:
         | 
| 149 | 
            +
                  - '158'
         | 
| 150 | 
            +
                  Server:
         | 
| 151 | 
            +
                  - Jetty(11.0.17)
         | 
| 152 | 
            +
                body:
         | 
| 153 | 
            +
                  encoding: UTF-8
         | 
| 154 | 
            +
                  string: '{"Item":{"created_at":{"S":"2024-05-01T19:36:43-05:00"},"id":{"S":"hguzman10@gmail.com"},"balance":{"N":"60"},"updated_at":{"S":"2024-05-01T19:36:43-05:00"}}}'
         | 
| 155 | 
            +
              recorded_at: Thu, 02 May 2024 00:36:43 GMT
         | 
| 156 | 
            +
            recorded_with: VCR 6.2.0
         | 
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: dynamodb_record
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.0 | 
| 4 | 
            +
              version: 0.2.0
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Henry Guzman
         | 
| @@ -9,7 +9,7 @@ authors: | |
| 9 9 | 
             
            autorequire:
         | 
| 10 10 | 
             
            bindir: bin
         | 
| 11 11 | 
             
            cert_chain: []
         | 
| 12 | 
            -
            date: 2024- | 
| 12 | 
            +
            date: 2024-05-02 00:00:00.000000000 Z
         | 
| 13 13 | 
             
            dependencies:
         | 
| 14 14 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 15 15 | 
             
              name: activesupport
         | 
| @@ -181,14 +181,21 @@ files: | |
| 181 181 | 
             
            - lib/dynamodb_record/persistence.rb
         | 
| 182 182 | 
             
            - lib/dynamodb_record/query.rb
         | 
| 183 183 | 
             
            - lib/dynamodb_record/version.rb
         | 
| 184 | 
            +
            - spec/app/models/authorization.rb
         | 
| 184 185 | 
             
            - spec/app/models/person.rb
         | 
| 185 186 | 
             
            - spec/app/models/user.rb
         | 
| 186 187 | 
             
            - spec/dynamodb_record/document_spec.rb
         | 
| 187 188 | 
             
            - spec/dynamodb_record/fields_spec.rb
         | 
| 188 189 | 
             
            - spec/dynamodb_record/finders_spec.rb
         | 
| 190 | 
            +
            - spec/dynamodb_record/persistence_spec.rb
         | 
| 189 191 | 
             
            - spec/fixtures/vcr_cassettes/DynamodbRecord_Document/initializes_from_database.yml
         | 
| 190 192 | 
             
            - spec/fixtures/vcr_cassettes/DynamodbRecord_Fields/_find/finds_record.yml
         | 
| 191 193 | 
             
            - spec/fixtures/vcr_cassettes/DynamodbRecord_Fields/_find/when_record_doesn_t_exists/returns_empty_object.yml
         | 
| 194 | 
            +
            - spec/fixtures/vcr_cassettes/DynamodbRecord_Persistence/_destroy/when_no_range_key/destroys_record.yml
         | 
| 195 | 
            +
            - spec/fixtures/vcr_cassettes/DynamodbRecord_Persistence/_destroy/when_there_is_range_key/destroys_record.yml
         | 
| 196 | 
            +
            - spec/fixtures/vcr_cassettes/DynamodbRecord_Persistence/does_not_overwrite_existing_record.yml
         | 
| 197 | 
            +
            - spec/fixtures/vcr_cassettes/DynamodbRecord_Persistence/saves_record.yml
         | 
| 198 | 
            +
            - spec/fixtures/vcr_cassettes/DynamodbRecord_Persistence/updates_record.yml
         | 
| 192 199 | 
             
            - spec/spec_helper.rb
         | 
| 193 200 | 
             
            homepage: https://github.com/CarsOk/dynamodb-record
         | 
| 194 201 | 
             
            licenses:
         | 
| @@ -214,12 +221,19 @@ signing_key: | |
| 214 221 | 
             
            specification_version: 4
         | 
| 215 222 | 
             
            summary: A simple DynamoDB ORM
         | 
| 216 223 | 
             
            test_files:
         | 
| 224 | 
            +
            - spec/app/models/authorization.rb
         | 
| 217 225 | 
             
            - spec/app/models/person.rb
         | 
| 218 226 | 
             
            - spec/app/models/user.rb
         | 
| 219 227 | 
             
            - spec/dynamodb_record/document_spec.rb
         | 
| 220 228 | 
             
            - spec/dynamodb_record/fields_spec.rb
         | 
| 221 229 | 
             
            - spec/dynamodb_record/finders_spec.rb
         | 
| 230 | 
            +
            - spec/dynamodb_record/persistence_spec.rb
         | 
| 222 231 | 
             
            - spec/fixtures/vcr_cassettes/DynamodbRecord_Document/initializes_from_database.yml
         | 
| 223 232 | 
             
            - spec/fixtures/vcr_cassettes/DynamodbRecord_Fields/_find/finds_record.yml
         | 
| 224 233 | 
             
            - spec/fixtures/vcr_cassettes/DynamodbRecord_Fields/_find/when_record_doesn_t_exists/returns_empty_object.yml
         | 
| 234 | 
            +
            - spec/fixtures/vcr_cassettes/DynamodbRecord_Persistence/_destroy/when_no_range_key/destroys_record.yml
         | 
| 235 | 
            +
            - spec/fixtures/vcr_cassettes/DynamodbRecord_Persistence/_destroy/when_there_is_range_key/destroys_record.yml
         | 
| 236 | 
            +
            - spec/fixtures/vcr_cassettes/DynamodbRecord_Persistence/does_not_overwrite_existing_record.yml
         | 
| 237 | 
            +
            - spec/fixtures/vcr_cassettes/DynamodbRecord_Persistence/saves_record.yml
         | 
| 238 | 
            +
            - spec/fixtures/vcr_cassettes/DynamodbRecord_Persistence/updates_record.yml
         | 
| 225 239 | 
             
            - spec/spec_helper.rb
         |