act_as_fire_record_beta 0.0.2 → 0.0.3

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: 7fa5ffce208135ba537f2eba3ae37caf239e6b49446f2d31c77668263ec178c3
4
- data.tar.gz: c4705cc8018288e15a766bd7efde203fdb03d701db208a66cbb46409732b1077
3
+ metadata.gz: 0d8ee306c4e6bccb39cdd7cfa2c84dbe0a89c13a011354619bdf99ed1151227b
4
+ data.tar.gz: 5b969ad0910739a3d4d0e67e03e28ff7d0e292b60df0dabf9e837fc3030c90f4
5
5
  SHA512:
6
- metadata.gz: 382202705f5383d954bfd336137b6d74e0bf66879a3a07e8a480e4ec3e1d9427bd35e5d23180a929c39c74ab8d7d2607eff70802a8f8c86f6825a7c6e3fedcfc
7
- data.tar.gz: '01158cd356bae1b962f62ba6575d52fb9e5648d83dc501ab8e3d0aaf2c19bffe6a5f1501aa17206a3f6f8f71a3f841370b5f7295aa8c19a07faecc249de319ab'
6
+ metadata.gz: d8aaa747059a1deb309124fd69e180dc1b08789d361a5cd86a4bc6274361d6dcc90a4d5f51448f4ebb408ad865138be49d3b3dab1b90c85fa08b77590316b3df
7
+ data.tar.gz: 37673dc337b3bcbd127d434a03ba0e8c2c50577233546ccb05a234a3270fe1aa5718f116395086150a13977d4d703ec442d9cfe179aa21d245d770c46df6fab3
@@ -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
- model_lass = ActAsFireRecordBeta.class_mapping[query.from[0].collection_id]
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.each(&:destroy)
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
@@ -1,3 +1,3 @@
1
1
  module ActAsFireRecordBeta
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3"
3
3
  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
 
@@ -91,7 +93,20 @@ module ActAsFireRecordBeta
91
93
  end
92
94
 
93
95
  def destroy_all
94
- col.list_documents.each(&:delete)
96
+ delete_in_batch(col.list_documents)
97
+ end
98
+
99
+ def delete_in_batch(doc_refs)
100
+ max_batch_size = 500
101
+ nested_doc_refs = doc_refs.each_slice(max_batch_size)
102
+ firestore = Google::Cloud::Firestore.new
103
+ nested_doc_refs.each do |doc_refs|
104
+ firestore.batch do |b|
105
+ doc_refs.each do |doc_ref|
106
+ b.delete(doc_ref)
107
+ end
108
+ end
109
+ end
95
110
  end
96
111
 
97
112
  def save_params(record)
@@ -107,7 +122,7 @@ module ActAsFireRecordBeta
107
122
  @_firestore_attributes.each do |key|
108
123
  params[key] = data[key]
109
124
  end
110
- new(params)
125
+ new(params).tap { |record| record.doc_ref = data }
111
126
  end
112
127
 
113
128
  private
@@ -165,6 +180,13 @@ module ActAsFireRecordBeta
165
180
  true
166
181
  end
167
182
 
183
+ # Override
184
+ def inspect
185
+ hash = attributes.transform_keys(&:to_sym)
186
+ hash_text = hash.to_s[1..-2]
187
+ "#<#{self.class} #{hash_text}>"
188
+ end
189
+
168
190
  private
169
191
 
170
192
  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.2
4
+ version: 0.0.3
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-22 00:00:00.000000000 Z
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.3.7
79
+ rubygems_version: 3.2.33
80
80
  signing_key:
81
81
  specification_version: 4
82
82
  summary: ActiveRecord like interface for Firestore