marty 0.5.12 → 0.5.13

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
  SHA1:
3
- metadata.gz: 48826f7964d59aff4018ae9b307c6dae70260a1c
4
- data.tar.gz: 7e1d795a1dce7b7d59d3d942fff8e038611521a4
3
+ metadata.gz: 4f79a79cfdce773e4530e872d06e272617fcaa9e
4
+ data.tar.gz: f48be0761efff0640be9ac9d2402d99d9f2918dc
5
5
  SHA512:
6
- metadata.gz: e6ad62a87e3ff08491af408a941037837c0306e5ea9326ce705015458e054afc630c1eb0d452b6f25e4bbd1343b4c4d18f79fb4d3c2e4189ba9217747697055b
7
- data.tar.gz: b554240eabf456d57c32cbac53646404907e64eacbed9bc0c6534a08a0f4ee825a3ce3b80b6fa3c560d3586d0681af6be6d977c8a66c403a7b41a56df7505b21
6
+ metadata.gz: 9b897b88b9cba53aca91ac002021c13aedc9f666be21a98355c0911e7a97bb4c708c534637e57f955eeb3073aae41c008b6bf5146ff33a44ec7faf1a4faf9353
7
+ data.tar.gz: 4539977273f8848e235876209f1e1148267bc84cb5bbb5536ea623bcb40cc6c40a27bd69fa031008d5f2bae3cd34985d420ebc9f1c11fc3949d7be7a70f110ed
data/lib/marty.rb CHANGED
@@ -10,6 +10,7 @@ require 'marty/data_exporter'
10
10
  require 'marty/xl.rb'
11
11
  require 'marty/data_conversion'
12
12
  require 'marty/data_importer'
13
+ require 'marty/data_change'
13
14
  require 'marty/relation'
14
15
  require 'marty/promise_job'
15
16
  require 'marty/promise_proxy'
@@ -176,4 +176,41 @@ class Marty::DataChange
176
176
  klass.where(change_q, t0, t1, t0, t1).
177
177
  order("group_id, created_dt").group_by(&:group_id)
178
178
  end
179
+
180
+ ######################################################################
181
+
182
+ # Given a Mcfly class_name, find all of the obsoleted Mcfly objects
183
+ # which are referenced by live (non-obsoleted) class instances.
184
+ delorean_fn :dead_refs, sig: 2 do
185
+ |ts, class_name|
186
+
187
+ klass = class_name.constantize
188
+
189
+ return unless Mcfly.has_mcfly?(klass)
190
+
191
+ ts = Mcfly.normalize_infinity(ts)
192
+ col_types = Marty::DataConversion.col_types(klass)
193
+
194
+ mcfly_cols = col_types.map { |attr, h|
195
+ Hash === h && Mcfly.has_mcfly?(h[:assoc_class]) && h || nil
196
+ }.compact
197
+
198
+ mcfly_cols.each_with_object({}) {
199
+ |h, res|
200
+
201
+ fk = h[:foreign_key]
202
+ attr = fk.to_s.sub(/_id$/, '').to_sym
203
+ ref_table = h[:assoc_class].table_name
204
+
205
+ arr = klass.joins(attr).
206
+ where("#{klass.table_name}.obsoleted_dt >= ?", ts).
207
+ where("#{klass.table_name}.created_dt < ?", ts).
208
+ where("#{ref_table}.obsoleted_dt < ? OR #{ref_table}.created_dt >= ?", ts, ts).
209
+ all
210
+
211
+ arr = arr.map {|obj| Marty::DataExporter.export_attrs(klass, obj, [fk])}
212
+
213
+ res[fk] = arr unless arr.empty?
214
+ }
215
+ end
179
216
  end
data/lib/marty/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Marty
2
- VERSION = "0.5.12"
2
+ VERSION = "0.5.13"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: marty
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.12
4
+ version: 0.5.13
5
5
  platform: ruby
6
6
  authors:
7
7
  - Arman Bostani
@@ -12,7 +12,7 @@ authors:
12
12
  autorequire:
13
13
  bindir: bin
14
14
  cert_chain: []
15
- date: 2015-10-12 00:00:00.000000000 Z
15
+ date: 2015-10-13 00:00:00.000000000 Z
16
16
  dependencies:
17
17
  - !ruby/object:Gem::Dependency
18
18
  name: pg
@@ -395,7 +395,6 @@ files:
395
395
  - app/models/marty/api_auth.rb
396
396
  - app/models/marty/api_auth.rb~
397
397
  - app/models/marty/base.rb
398
- - app/models/marty/data_change.rb
399
398
  - app/models/marty/data_change.rb~
400
399
  - app/models/marty/enum.rb
401
400
  - app/models/marty/enum.rb~
@@ -450,6 +449,7 @@ files:
450
449
  - lib/marty.rb~
451
450
  - lib/marty/content_handler.rb
452
451
  - lib/marty/content_handler.rb~
452
+ - lib/marty/data_change.rb
453
453
  - lib/marty/data_conversion.rb
454
454
  - lib/marty/data_exporter.rb
455
455
  - lib/marty/data_exporter.rb~