act_as_fire_record_beta 0.0.2 → 0.0.4
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
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 631c8a9418186db9bba40eeed7d122996c161c6f44bba58a230840e3ee063b73
|
4
|
+
data.tar.gz: 82a5ae9c0f6aa62920cdba71fb8e31f279aea21fdb8c989b297f15e04e1e06d7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: acab4a53dd1d91888490a537e4b85234c451ac2c57af072a2cb383a63cd7009db6f7130ceb8d2b710b9f012f660727873c897419bd64e98c57e8003cf6118418
|
7
|
+
data.tar.gz: c3b124d95d7e1dab694fcb86fb83ed2e90efc4502121a6d87e4263b7b7bf7590f0a1505c47e7d08b6cff49230d1ea40d26eadf98a906a3ab55cc1d9ccf8e7ad3
|
@@ -5,13 +5,13 @@ module Google
|
|
5
5
|
def get_records(limit: nil)
|
6
6
|
scope = limit ? limit(limit) : self
|
7
7
|
scope.get.map do |data|
|
8
|
-
|
9
|
-
model_lass.to_instance(data)
|
8
|
+
fire_record_class.to_instance(data)
|
10
9
|
end
|
11
10
|
end
|
12
11
|
|
13
12
|
def destroy_all
|
14
|
-
get_records.
|
13
|
+
doc_refs = get_records.map(&:doc_ref)
|
14
|
+
fire_record_class.delete_in_batch(doc_refs)
|
15
15
|
end
|
16
16
|
|
17
17
|
def first(limit = 1)
|
@@ -22,6 +22,10 @@ module Google
|
|
22
22
|
def exists?
|
23
23
|
!!first
|
24
24
|
end
|
25
|
+
|
26
|
+
def fire_record_class
|
27
|
+
@_fire_record_class ||= ActAsFireRecordBeta.class_mapping[query.from[0].collection_id]
|
28
|
+
end
|
25
29
|
end
|
26
30
|
end
|
27
31
|
end
|
@@ -23,6 +23,8 @@ module ActAsFireRecordBeta
|
|
23
23
|
attribute :created_at, :time
|
24
24
|
attribute :updated_at, :time
|
25
25
|
|
26
|
+
attr_accessor :doc_ref
|
27
|
+
|
26
28
|
ActAsFireRecordBeta.class_mapping[collection_name_with_env] = self
|
27
29
|
end
|
28
30
|
|
@@ -30,9 +32,16 @@ module ActAsFireRecordBeta
|
|
30
32
|
extend Forwardable
|
31
33
|
delegate :logger => Rails
|
32
34
|
|
33
|
-
|
35
|
+
# Copied from activemodel-7.0.4/lib/active_model/attributes.rb
|
36
|
+
NO_DEFAULT_PROVIDED = Object.new
|
37
|
+
|
38
|
+
def firestore_attribute(name, cast_type = nil, default: NO_DEFAULT_PROVIDED, **options)
|
39
|
+
attribute(name, cast_type, default: default, **options)
|
40
|
+
firestore_attributes << name.to_sym
|
41
|
+
end
|
42
|
+
|
43
|
+
def firestore_attributes
|
34
44
|
@_firestore_attributes ||= []
|
35
|
-
@_firestore_attributes += names.map(&:to_sym)
|
36
45
|
end
|
37
46
|
|
38
47
|
def col
|
@@ -91,7 +100,20 @@ module ActAsFireRecordBeta
|
|
91
100
|
end
|
92
101
|
|
93
102
|
def destroy_all
|
94
|
-
col.list_documents
|
103
|
+
delete_in_batch(col.list_documents)
|
104
|
+
end
|
105
|
+
|
106
|
+
def delete_in_batch(doc_refs)
|
107
|
+
max_batch_size = 500
|
108
|
+
nested_doc_refs = doc_refs.each_slice(max_batch_size)
|
109
|
+
firestore = Google::Cloud::Firestore.new
|
110
|
+
nested_doc_refs.each do |doc_refs|
|
111
|
+
firestore.batch do |b|
|
112
|
+
doc_refs.each do |doc_ref|
|
113
|
+
b.delete(doc_ref)
|
114
|
+
end
|
115
|
+
end
|
116
|
+
end
|
95
117
|
end
|
96
118
|
|
97
119
|
def save_params(record)
|
@@ -107,7 +129,7 @@ module ActAsFireRecordBeta
|
|
107
129
|
@_firestore_attributes.each do |key|
|
108
130
|
params[key] = data[key]
|
109
131
|
end
|
110
|
-
new(params)
|
132
|
+
new(params).tap { |record| record.doc_ref = data }
|
111
133
|
end
|
112
134
|
|
113
135
|
private
|
@@ -165,6 +187,13 @@ module ActAsFireRecordBeta
|
|
165
187
|
true
|
166
188
|
end
|
167
189
|
|
190
|
+
# Override
|
191
|
+
def inspect
|
192
|
+
hash = attributes.transform_keys(&:to_sym)
|
193
|
+
hash_text = hash.to_s[1..-2]
|
194
|
+
"#<#{self.class} #{hash_text}>"
|
195
|
+
end
|
196
|
+
|
168
197
|
private
|
169
198
|
|
170
199
|
def save_params
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: act_as_fire_record_beta
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Junichi Ito
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-10-
|
11
|
+
date: 2022-10-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -76,7 +76,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
76
76
|
- !ruby/object:Gem::Version
|
77
77
|
version: '0'
|
78
78
|
requirements: []
|
79
|
-
rubygems_version: 3.
|
79
|
+
rubygems_version: 3.2.33
|
80
80
|
signing_key:
|
81
81
|
specification_version: 4
|
82
82
|
summary: ActiveRecord like interface for Firestore
|