dinamo 0.1.1 → 0.1.2
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/lib/dinamo/adapter.rb +1 -1
- data/lib/dinamo/model.rb +8 -0
- data/lib/dinamo/model/attributes.rb +22 -6
- data/lib/dinamo/model/persistence.rb +7 -1
- data/lib/dinamo/model/validations/presence.rb +0 -3
- data/lib/dinamo/version.rb +1 -1
- metadata +3 -3
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: f9236c52dc01154fdf5f115443a79d207c9f3777
         | 
| 4 | 
            +
              data.tar.gz: 3f14b1b5ab4d34b35a1f7ffefd6702cf2f113d04
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 857e718c30243a71349767f0d72255d0a73dfc4eeef4c4259c76de7d2b9bc62a1777cf4f937b1881f5dbd735a216d79465f4782a012bf117d7b7602621ddf317
         | 
| 7 | 
            +
              data.tar.gz: ecde0c36408095d0874c6e3e3399331b6eb3f413f262947cd25460a8055bc8ec5de760604e0b586bdb6406a2fb6113443f41b4218ce0775a338317129df0d2bc
         | 
    
        data/lib/dinamo/adapter.rb
    CHANGED
    
    
    
        data/lib/dinamo/model.rb
    CHANGED
    
    
| @@ -15,6 +15,9 @@ module Dinamo | |
| 15 15 | 
             
                      silent_assign(**attributes)
         | 
| 16 16 | 
             
                      self.class.define_attribute_methods(*attributes.keys)
         | 
| 17 17 | 
             
                    end
         | 
| 18 | 
            +
                    after(:initialize) do
         | 
| 19 | 
            +
                      @attributes = self.class.default_values.merge(@attributes)
         | 
| 20 | 
            +
                    end
         | 
| 18 21 |  | 
| 19 22 | 
             
                    before :attribute_update do |attribute, value|
         | 
| 20 23 | 
             
                      pkey = primary_keys[attribute]
         | 
| @@ -22,6 +25,13 @@ module Dinamo | |
| 22 25 | 
             
                        raise Exceptions::PrimaryKeyError, "%p cannot be modified" % attribute
         | 
| 23 26 | 
             
                      end
         | 
| 24 27 | 
             
                    end
         | 
| 28 | 
            +
             | 
| 29 | 
            +
                    after :attribute_update do |attribute, value|
         | 
| 30 | 
            +
                      unless self.class.strict? ||
         | 
| 31 | 
            +
                        self.class.supported_fields.find { |key| key.name == attribute.to_s }
         | 
| 32 | 
            +
                          attributes.delete(attribute)
         | 
| 33 | 
            +
                      end
         | 
| 34 | 
            +
                    end
         | 
| 25 35 | 
             
                  end
         | 
| 26 36 |  | 
| 27 37 | 
             
                  module ClassMethods
         | 
| @@ -52,6 +62,11 @@ module Dinamo | |
| 52 62 | 
             
                      attribute_methods << attr
         | 
| 53 63 | 
             
                    end
         | 
| 54 64 |  | 
| 65 | 
            +
                    def default_values
         | 
| 66 | 
            +
                      Hash[supported_fields.select { |field| not field.default.nil? }
         | 
| 67 | 
            +
                        .map { |field| [field.name, field.default] }].with_indifferent_access
         | 
| 68 | 
            +
                    end
         | 
| 69 | 
            +
             | 
| 55 70 | 
             
                    def primary_keys
         | 
| 56 71 | 
             
                      @primary_keys ||= {}
         | 
| 57 72 | 
             
                    end
         | 
| @@ -138,19 +153,20 @@ module Dinamo | |
| 138 153 | 
             
                  alias equal? ==
         | 
| 139 154 |  | 
| 140 155 | 
             
                  def primary_keys
         | 
| 141 | 
            -
                     | 
| 156 | 
            +
                    self.class.primary_keys.inject({}) do |keys, (_, key)|
         | 
| 142 157 | 
             
                      keys.merge(key => attributes[key])
         | 
| 143 158 | 
             
                    end
         | 
| 144 159 | 
             
                  end
         | 
| 145 160 |  | 
| 146 161 | 
             
                  class Key
         | 
| 147 | 
            -
                    attr_reader :name, :type
         | 
| 162 | 
            +
                    attr_reader :name, :type, :default
         | 
| 148 163 |  | 
| 149 | 
            -
                    def initialize(name, type: nil, required: false, primary: false, **options)
         | 
| 150 | 
            -
                      @name | 
| 151 | 
            -
                      @type | 
| 164 | 
            +
                    def initialize(name, type: nil, required: false, primary: false, default: nil, **options)
         | 
| 165 | 
            +
                      @name     = name
         | 
| 166 | 
            +
                      @type     = type
         | 
| 152 167 | 
             
                      @required = required
         | 
| 153 | 
            -
                      @primary | 
| 168 | 
            +
                      @primary  = primary
         | 
| 169 | 
            +
                      @default  = default
         | 
| 154 170 | 
             
                    end
         | 
| 155 171 |  | 
| 156 172 | 
             
                    def required?
         | 
| @@ -17,7 +17,13 @@ module Dinamo | |
| 17 17 | 
             
                      item = adapter.get(**keys).item 
         | 
| 18 18 | 
             
                      fail Exceptions::RecordNotFoundError,
         | 
| 19 19 | 
             
                        "Corresponding record (%p) can not be found" % keys unless item
         | 
| 20 | 
            -
                      new(**symbolize(item))
         | 
| 20 | 
            +
                      object = new(**symbolize(item))
         | 
| 21 | 
            +
                      object.new_record = false
         | 
| 22 | 
            +
                      object
         | 
| 23 | 
            +
                    end
         | 
| 24 | 
            +
             | 
| 25 | 
            +
                    def exist?(**keys)
         | 
| 26 | 
            +
                      adapter.exist?(**keys)
         | 
| 21 27 | 
             
                    end
         | 
| 22 28 |  | 
| 23 29 | 
             
                    def create(attributes = nil, &block)
         | 
    
        data/lib/dinamo/version.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: dinamo
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.1. | 
| 4 | 
            +
              version: 0.1.2
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - namusyaka
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: exe
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date:  | 
| 11 | 
            +
            date: 2016-03-08 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: activesupport
         | 
| @@ -160,7 +160,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement | |
| 160 160 | 
             
                  version: '0'
         | 
| 161 161 | 
             
            requirements: []
         | 
| 162 162 | 
             
            rubyforge_project: 
         | 
| 163 | 
            -
            rubygems_version: 2. | 
| 163 | 
            +
            rubygems_version: 2.5.1
         | 
| 164 164 | 
             
            signing_key: 
         | 
| 165 165 | 
             
            specification_version: 4
         | 
| 166 166 | 
             
            summary: DynamoDB ORM for Ruby
         |