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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 56bab2629674a74a9919cfc6781e5d400215d486
4
- data.tar.gz: ba4761aff802517a7e8ce5c75c1260dcaf32fe56
3
+ metadata.gz: f9236c52dc01154fdf5f115443a79d207c9f3777
4
+ data.tar.gz: 3f14b1b5ab4d34b35a1f7ffefd6702cf2f113d04
5
5
  SHA512:
6
- metadata.gz: 34aa8ba58dd4d595202df5b1d769e7f68366364d0db6dc8712fc97bb36a63e3ece92bedeaeadaf10b5e599064cec2be2dc80d9a6a6e871a071250124074aa645
7
- data.tar.gz: 5c8edbb7e455b97665cf0cc6d273a55e0cbdbe6bb7afa91ae4a806504a2dc5de8c218520f7b2c47fdd0486c7e31e3f51df71b38f90d63ff6eeed9265f3672acb
6
+ metadata.gz: 857e718c30243a71349767f0d72255d0a73dfc4eeef4c4259c76de7d2b9bc62a1777cf4f937b1881f5dbd735a216d79465f4782a012bf117d7b7602621ddf317
7
+ data.tar.gz: ecde0c36408095d0874c6e3e3399331b6eb3f413f262947cd25460a8055bc8ec5de760604e0b586bdb6406a2fb6113443f41b4218ce0775a338317129df0d2bc
@@ -50,7 +50,7 @@ module Dinamo
50
50
 
51
51
  def delete(key)
52
52
  find_or_abort!(**key)
53
- @database.update_item(
53
+ @database.delete_item(
54
54
  table_name: @table_name,
55
55
  key: key
56
56
  )
@@ -35,6 +35,14 @@ module Dinamo
35
35
  def table_name=(name)
36
36
  @table_name = name
37
37
  end
38
+
39
+ def strict(bool)
40
+ @strict = bool
41
+ end
42
+
43
+ def strict?
44
+ @strict.nil? ? true : @strict
45
+ end
38
46
  end
39
47
 
40
48
  default_casters do
@@ -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
- @primary_keys ||= self.class.primary_keys.inject({}) do |keys, (_, key)|
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 = name
151
- @type = 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 = 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)
@@ -2,9 +2,6 @@ class Dinamo::Model
2
2
  module Validation
3
3
  class PresenceValidator < EachValidator
4
4
  def validate_each(record, key, value)
5
- #p record
6
- #p key
7
- #p value
8
5
  record.errors.add(key, :blank) if value.blank?
9
6
  end
10
7
  end
@@ -1,3 +1,3 @@
1
1
  module Dinamo
2
- VERSION = "0.1.1"
2
+ VERSION = "0.1.2"
3
3
  end
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.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: 2015-12-16 00:00:00.000000000 Z
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.4.5.1
163
+ rubygems_version: 2.5.1
164
164
  signing_key:
165
165
  specification_version: 4
166
166
  summary: DynamoDB ORM for Ruby