act_as_fire_record_beta 0.0.2 → 0.0.3

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