couchbase-orm 0.0.10 → 0.0.11
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/couchbase-orm.rb +5 -1
- data/lib/couchbase-orm/base.rb +9 -2
- data/lib/couchbase-orm/persistence.rb +23 -6
- data/lib/couchbase-orm/utilities/index.rb +16 -5
- data/lib/couchbase-orm/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6fd4a43082ca5d80291db012e1434dc09830a8e5
|
4
|
+
data.tar.gz: ae0fd140002527cd633658d5ad52479d9f4a2a6a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9e75b6386a260d835ee1af1a193fe2445fe81761def69396321314b666fb5d10db0239869563f9fa6accc7c8cf3315f88e5a2bb5a1093b930473d77204b9ecd9
|
7
|
+
data.tar.gz: 9bbaa54b9b611e1268a78bef595e96e355c8e0880c4bc9da4e69c5e86c8c23a9fe3a0a07e5efa69790225b4bd493f67ff6c28da37b17251c1a2587f11102a1b2
|
data/lib/couchbase-orm.rb
CHANGED
@@ -9,7 +9,11 @@ module CouchbaseOrm
|
|
9
9
|
autoload :Base, 'couchbase-orm/base'
|
10
10
|
|
11
11
|
def self.try_load(id)
|
12
|
-
result =
|
12
|
+
result = nil
|
13
|
+
::ActiveSupport::Dependencies.interlock.permit_concurrent_loads do
|
14
|
+
result = id.respond_to?(:cas) ? id : CouchbaseOrm::Base.bucket.get(id, quiet: true, extended: true)
|
15
|
+
end
|
16
|
+
|
13
17
|
if result && result.value.is_a?(Hash) && result.value[:type]
|
14
18
|
ddoc = result.value[:type]
|
15
19
|
::CouchbaseOrm::Base.descendants.each do |model|
|
data/lib/couchbase-orm/base.rb
CHANGED
@@ -102,7 +102,10 @@ module CouchbaseOrm
|
|
102
102
|
raise Libcouchbase::Error::EmptyKey, 'no id(s) provided'
|
103
103
|
end
|
104
104
|
|
105
|
-
records =
|
105
|
+
records = nil
|
106
|
+
::ActiveSupport::Dependencies.interlock.permit_concurrent_loads do
|
107
|
+
records = bucket.get(*ids, **options)
|
108
|
+
end
|
106
109
|
|
107
110
|
records = records.is_a?(Array) ? records : [records]
|
108
111
|
records.map! { |record|
|
@@ -123,7 +126,11 @@ module CouchbaseOrm
|
|
123
126
|
alias_method :[], :find_by_id
|
124
127
|
|
125
128
|
def exists?(id)
|
126
|
-
|
129
|
+
val = false
|
130
|
+
::ActiveSupport::Dependencies.interlock.permit_concurrent_loads do
|
131
|
+
val = bucket.get(id, quiet: true).nil?
|
132
|
+
end
|
133
|
+
!val
|
127
134
|
end
|
128
135
|
alias_method :has_key?, :exists?
|
129
136
|
end
|
@@ -99,7 +99,9 @@ module CouchbaseOrm
|
|
99
99
|
# The record is simply removed, no callbacks are executed.
|
100
100
|
def delete(with_cas: false, **options)
|
101
101
|
options[:cas] = @__metadata__.cas if with_cas
|
102
|
-
|
102
|
+
::ActiveSupport::Dependencies.interlock.permit_concurrent_loads do
|
103
|
+
self.class.bucket.delete(@__metadata__.key, options)
|
104
|
+
end
|
103
105
|
|
104
106
|
@__metadata__.key = nil
|
105
107
|
@id = nil
|
@@ -121,7 +123,9 @@ module CouchbaseOrm
|
|
121
123
|
destroy_associations!
|
122
124
|
|
123
125
|
options[:cas] = @__metadata__.cas if with_cas
|
124
|
-
|
126
|
+
::ActiveSupport::Dependencies.interlock.permit_concurrent_loads do
|
127
|
+
self.class.bucket.delete(@__metadata__.key, options)
|
128
|
+
end
|
125
129
|
|
126
130
|
@__metadata__.key = nil
|
127
131
|
@id = nil
|
@@ -165,7 +169,10 @@ module CouchbaseOrm
|
|
165
169
|
key = @__metadata__.key
|
166
170
|
raise "unable to reload, model not persisted" unless key
|
167
171
|
|
168
|
-
resp =
|
172
|
+
resp = nil
|
173
|
+
::ActiveSupport::Dependencies.interlock.permit_concurrent_loads do
|
174
|
+
resp = self.class.bucket.get(key, quiet: false, extended: true)
|
175
|
+
end
|
169
176
|
@__attributes__ = ::ActiveSupport::HashWithIndifferentAccess.new(resp.value)
|
170
177
|
@__metadata__.key = resp.key
|
171
178
|
@__metadata__.cas = resp.cas
|
@@ -177,7 +184,10 @@ module CouchbaseOrm
|
|
177
184
|
|
178
185
|
# Updates the TTL of the document
|
179
186
|
def touch(**options)
|
180
|
-
res =
|
187
|
+
res = nil
|
188
|
+
::ActiveSupport::Dependencies.interlock.permit_concurrent_loads do
|
189
|
+
res = self.class.bucket.touch(@__metadata__.key, async: false, **options)
|
190
|
+
end
|
181
191
|
@__metadata__.cas = resp.cas
|
182
192
|
self
|
183
193
|
end
|
@@ -198,7 +208,11 @@ module CouchbaseOrm
|
|
198
208
|
|
199
209
|
_id = @__metadata__.key
|
200
210
|
options[:cas] = @__metadata__.cas if with_cas
|
201
|
-
|
211
|
+
|
212
|
+
resp = nil
|
213
|
+
::ActiveSupport::Dependencies.interlock.permit_concurrent_loads do
|
214
|
+
resp = self.class.bucket.replace(_id, @__attributes__, **options)
|
215
|
+
end
|
202
216
|
|
203
217
|
# Ensure the model is up to date
|
204
218
|
@__metadata__.key = resp.key
|
@@ -220,7 +234,10 @@ module CouchbaseOrm
|
|
220
234
|
@__attributes__.delete(:id)
|
221
235
|
|
222
236
|
_id = @id || self.class.uuid_generator.next(self)
|
223
|
-
resp =
|
237
|
+
resp = nil
|
238
|
+
::ActiveSupport::Dependencies.interlock.permit_concurrent_loads do
|
239
|
+
resp = self.class.bucket.add(_id, @__attributes__, **options)
|
240
|
+
end
|
224
241
|
|
225
242
|
# Ensure the model is up to date
|
226
243
|
@__metadata__.key = resp.key
|
@@ -50,13 +50,18 @@ module CouchbaseOrm
|
|
50
50
|
# use the bucket key as an index - lookup records by attr values
|
51
51
|
define_singleton_method(find_by_method) do |*values|
|
52
52
|
key = self.send(class_bucket_key_method, *values)
|
53
|
-
id =
|
53
|
+
id = nil
|
54
|
+
::ActiveSupport::Dependencies.interlock.permit_concurrent_loads do
|
55
|
+
id = self.bucket.get(key, quiet: true)
|
56
|
+
end
|
54
57
|
if id
|
55
58
|
mod = self.find_by_id(id)
|
56
59
|
return mod if mod
|
57
60
|
|
58
61
|
# Clean up record if the id doesn't exist
|
59
|
-
|
62
|
+
::ActiveSupport::Dependencies.interlock.permit_concurrent_loads do
|
63
|
+
self.bucket.delete(key, quiet: true)
|
64
|
+
end
|
60
65
|
end
|
61
66
|
|
62
67
|
nil
|
@@ -98,10 +103,14 @@ module CouchbaseOrm
|
|
98
103
|
# new one. the id of the current record is used as the key's value.
|
99
104
|
after_save do |record|
|
100
105
|
original_key = instance_variable_get(original_bucket_key_var)
|
101
|
-
|
106
|
+
::ActiveSupport::Dependencies.interlock.permit_concurrent_loads do
|
107
|
+
record.class.bucket.delete(original_key, quiet: true) if original_key
|
108
|
+
end
|
102
109
|
|
103
110
|
unless presence == false && attrs.length == 1 && record[attrs[0]].nil?
|
104
|
-
|
111
|
+
::ActiveSupport::Dependencies.interlock.permit_concurrent_loads do
|
112
|
+
record.class.bucket.set(record.send(bucket_key_method), record.id, plain: true)
|
113
|
+
end
|
105
114
|
end
|
106
115
|
instance_variable_set(original_bucket_key_var, nil)
|
107
116
|
end
|
@@ -109,7 +118,9 @@ module CouchbaseOrm
|
|
109
118
|
# cleanup by removing the bucket key before the record is deleted
|
110
119
|
# TODO: handle unpersisted, modified component values
|
111
120
|
before_destroy do |record|
|
112
|
-
|
121
|
+
::ActiveSupport::Dependencies.interlock.permit_concurrent_loads do
|
122
|
+
record.class.bucket.delete(record.send(bucket_key_method), quiet: true)
|
123
|
+
end
|
113
124
|
true
|
114
125
|
end
|
115
126
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: couchbase-orm
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.11
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Stephen von Takach
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-11-
|
11
|
+
date: 2016-11-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: libcouchbase
|