dinamo 0.1.1 → 0.1.2
Sign up to get free protection for your applications and to get access to all the features.
- 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
|