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
|