dynamic-records-meritfront 3.1.3 → 3.1.29
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/Gemfile.lock +23 -9
- data/README.md +6 -0
- data/bin/update +3 -0
- data/lib/dynamic-records-meritfront/version.rb +1 -1
- data/lib/dynamic-records-meritfront.rb +48 -23
- metadata +6 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0e329f6fa51f14843549a6d3681870a99a5e1b9ff78af32281ca8a5433122922
|
4
|
+
data.tar.gz: 5c14dc25ee35ea526f220d5b727032dcaf1be0f1bb744c080c9a12c4a70b15bb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 19070cbac3c6442ba5ba82c28d370efe9a3cc6cfd0e6a05e5a74175982000484baa804baceb187b00badb865ba57e6f9059bf878670c518830c97ea904157779
|
7
|
+
data.tar.gz: 85892bfa3f8708bbb683297513ffb0f10650ad389084a219203241918e52208041c29a477e478027e3f841e0235b983fd1948f1ff65389b34efcbe18c531b805
|
data/Gemfile.lock
CHANGED
@@ -1,31 +1,45 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
dynamic-records-meritfront (3.1.
|
4
|
+
dynamic-records-meritfront (3.1.29)
|
5
5
|
hashid-rails
|
6
6
|
|
7
7
|
GEM
|
8
8
|
remote: https://rubygems.org/
|
9
9
|
specs:
|
10
|
-
activemodel (7.
|
11
|
-
activesupport (= 7.
|
12
|
-
activerecord (7.
|
13
|
-
activemodel (= 7.
|
14
|
-
activesupport (= 7.
|
15
|
-
|
10
|
+
activemodel (7.1.1)
|
11
|
+
activesupport (= 7.1.1)
|
12
|
+
activerecord (7.1.1)
|
13
|
+
activemodel (= 7.1.1)
|
14
|
+
activesupport (= 7.1.1)
|
15
|
+
timeout (>= 0.4.0)
|
16
|
+
activesupport (7.1.1)
|
17
|
+
base64
|
18
|
+
bigdecimal
|
16
19
|
concurrent-ruby (~> 1.0, >= 1.0.2)
|
20
|
+
connection_pool (>= 2.2.5)
|
21
|
+
drb
|
17
22
|
i18n (>= 1.6, < 2)
|
18
23
|
minitest (>= 5.1)
|
24
|
+
mutex_m
|
19
25
|
tzinfo (~> 2.0)
|
26
|
+
base64 (0.1.1)
|
27
|
+
bigdecimal (3.1.4)
|
20
28
|
concurrent-ruby (1.2.2)
|
29
|
+
connection_pool (2.4.1)
|
30
|
+
drb (2.1.1)
|
31
|
+
ruby2_keywords
|
21
32
|
hashid-rails (1.4.1)
|
22
33
|
activerecord (>= 4.0)
|
23
34
|
hashids (~> 1.0)
|
24
35
|
hashids (1.0.6)
|
25
|
-
i18n (1.
|
36
|
+
i18n (1.14.1)
|
26
37
|
concurrent-ruby (~> 1.0)
|
27
|
-
minitest (5.
|
38
|
+
minitest (5.20.0)
|
39
|
+
mutex_m (0.1.2)
|
28
40
|
rake (12.3.3)
|
41
|
+
ruby2_keywords (0.0.5)
|
42
|
+
timeout (0.4.0)
|
29
43
|
tzinfo (2.0.6)
|
30
44
|
concurrent-ruby (~> 1.0)
|
31
45
|
|
data/README.md
CHANGED
@@ -532,6 +532,12 @@ v3.0.6
|
|
532
532
|
....
|
533
533
|
- took out undocumented quick_safe_increment and safe_increment as they were not relevant to the gem - and fairly basic.
|
534
534
|
|
535
|
+
3.1.28
|
536
|
+
- warning messages for dynamic_attach. to_s'd any provided table_names for ease-of-use.
|
537
|
+
- logging info for dynamic_attach outside of instaload.
|
538
|
+
- fixed an error where instaload only worked with ApplicationRecord abstract_class. Now works on anything thats a subclass of ActiveRecord::Base
|
539
|
+
- wow
|
540
|
+
|
535
541
|
|
536
542
|
## Questions
|
537
543
|
- Q: does the name of a sql operation have anything to do with prepared statements?
|
data/bin/update
CHANGED
@@ -51,5 +51,8 @@ puts `git commit -m 'minor changes to version #{version_new}'`
|
|
51
51
|
puts "_______________________________________________"
|
52
52
|
puts "INSTALL GEM LOCALLY"
|
53
53
|
puts `bundle exec rake install`
|
54
|
+
puts "note if you cant install in your project u prob have different ruby versions for the project and this folder."
|
55
|
+
puts "if in that case and using rbenv, change your global ruby version under ~/.rbenv/version or your local by adding"
|
56
|
+
puts "somthing similar in a .ruby_version file. Not using .rbenv? Add ur instructions here"
|
54
57
|
puts "_______________________________________________"
|
55
58
|
puts "info: write 'bundle exec rake release' to release the current version to the interwebz"
|
@@ -105,7 +105,7 @@ module DynamicRecordsMeritfront
|
|
105
105
|
|
106
106
|
type = DB_TYPE_MAPS[v.class]
|
107
107
|
if type.nil?
|
108
|
-
raise StandardError.new("#{name} (of value: #{v}, class: #{v.class}) unsupported class for
|
108
|
+
raise StandardError.new("#{name} (of value: #{v}, class: #{v.class}) unsupported class for DynamicRecordsMeritfront#headache_sql")
|
109
109
|
elsif type.class == Proc
|
110
110
|
a = v[0]
|
111
111
|
# if a.nil?
|
@@ -400,9 +400,14 @@ module DynamicRecordsMeritfront
|
|
400
400
|
if returns_nil
|
401
401
|
return nil
|
402
402
|
else
|
403
|
-
raise StandardError.new("non-string class passed to
|
403
|
+
raise StandardError.new("non-string class passed to DynamicRecordsMeritfront#locate_hgid as the hgid_string variable")
|
404
404
|
end
|
405
405
|
end
|
406
|
+
if PROJECT_NAME == 'midflip'
|
407
|
+
#should be fine to take out in a month or so, just got lazy and pretty sure I am the only one using this gem.
|
408
|
+
#dont want to kill me jobs.
|
409
|
+
hgid_string = hgid_string.gsub('ApplicationRecord', 'Record')
|
410
|
+
end
|
406
411
|
if hgid_string.include?('@')
|
407
412
|
hgid_string = hgid_string.split('@')
|
408
413
|
hgid_string.pop
|
@@ -438,7 +443,7 @@ module DynamicRecordsMeritfront
|
|
438
443
|
nil
|
439
444
|
else
|
440
445
|
#stops execution as default
|
441
|
-
raise StandardError.new 'Not the expected class
|
446
|
+
raise StandardError.new 'Not the expected class or subclass.'
|
442
447
|
end
|
443
448
|
end
|
444
449
|
def get_hgid_tag(hgid_string)
|
@@ -654,37 +659,31 @@ module DynamicRecordsMeritfront
|
|
654
659
|
insta_array = insta_array.select{|ar| not ar[:dont_return]}
|
655
660
|
ret_hash = insta_array.map{|ar| [ar[:table_name].to_s, []]}.to_h
|
656
661
|
opts[:raw] = true
|
657
|
-
|
662
|
+
|
663
|
+
#annoying bug
|
664
|
+
s = self
|
665
|
+
unless s.abstract_class?
|
666
|
+
s = s.superclass
|
667
|
+
end
|
668
|
+
|
669
|
+
s.dynamic_sql(name, sql, opts).rows.each{|row|
|
658
670
|
#need to pre-parsed as it has a non-normal output.
|
659
671
|
table_name = row[2]
|
660
672
|
klass = row[1].constantize
|
661
673
|
json = row[0]
|
662
674
|
parsed = JSON.parse(json)
|
663
|
-
|
664
675
|
ret_hash[table_name].push dynamic_init(klass, parsed)
|
665
676
|
}
|
666
677
|
|
667
|
-
insta_array
|
678
|
+
insta_array.each{|a| a.delete(:sql)}
|
668
679
|
|
669
680
|
#formatting options
|
670
681
|
for insta in insta_array
|
671
682
|
if insta[:base_name]
|
672
683
|
#in this case, 'as' is meant as to what pseudonym to dynamicly attach it as
|
673
|
-
|
684
|
+
#we are attaching to the base table. Variable could of been less confusing. My bad.
|
685
|
+
dynamic_attach(ret_hash, insta[:base_name], insta[:table_name], base_on: insta[:base_on], attach_on: insta[:attach_on],
|
674
686
|
one_to_one: insta[:one_to_one], as: insta[:as])
|
675
|
-
|
676
|
-
if Rails.logger.level <= 1
|
677
|
-
tn = insta[:table_name]
|
678
|
-
bn = insta[:base_name]
|
679
|
-
tc = ret_hash[tn].count
|
680
|
-
btc = ret_hash[bn].count
|
681
|
-
|
682
|
-
if insta[:as]
|
683
|
-
Rails.logger.debug "#{n_attached} attached from #{tn}(#{tc}) as #{insta[:as]} -> #{bn}(#{btc})"
|
684
|
-
else
|
685
|
-
Rails.logger.debug "#{n_attached} attached from #{tn}(#{tc}) -> #{bn}(#{btc})"
|
686
|
-
end
|
687
|
-
end
|
688
687
|
elsif insta[:as]
|
689
688
|
Rails.logger.debug "#{insta[:table_name]} as #{insta[:as]}"
|
690
689
|
#in this case, the idea is more polymorphic in nature. unless they are confused and just want to rename the table (this can be done with
|
@@ -708,7 +707,7 @@ module DynamicRecordsMeritfront
|
|
708
707
|
m = model_with_an_id_column_and_timestamps
|
709
708
|
ar = m.superclass
|
710
709
|
mtname = m.table_name
|
711
|
-
|
710
|
+
transaction do
|
712
711
|
puts 'test recieving columns not normally in the record.'
|
713
712
|
rec = m.dynamic_sql(%Q{
|
714
713
|
SELECT id, 5 AS random_column from #{mtname} LIMIT 10
|
@@ -800,12 +799,23 @@ module DynamicRecordsMeritfront
|
|
800
799
|
def dynamic_attach(instaload_sql_output, base_name, attach_name, base_on: nil, attach_on: nil, one_to_one: false, as: nil)
|
801
800
|
#as just lets it attach us anywhere on the base class, and not just as the attach_name.
|
802
801
|
#Can be useful in polymorphic situations, otherwise may lead to confusion.
|
802
|
+
|
803
|
+
#oh the errors
|
804
|
+
base_name = base_name.to_s
|
805
|
+
attach_name = attach_name.to_s
|
806
|
+
|
803
807
|
as ||= attach_name
|
804
808
|
|
805
809
|
base_arr = instaload_sql_output[base_name]
|
806
810
|
|
807
811
|
#return if there is nothing for us to attach to.
|
808
|
-
|
812
|
+
if base_arr.nil?
|
813
|
+
Rails.logger.error("base table " + base_name + " was not set")
|
814
|
+
return 0
|
815
|
+
elsif not base_arr.any?
|
816
|
+
Rails.logger.debug("no items in base table " + base_name)
|
817
|
+
return 0
|
818
|
+
end
|
809
819
|
|
810
820
|
#set variables for neatness and so we dont compute each time
|
811
821
|
# base class information
|
@@ -830,7 +840,14 @@ module DynamicRecordsMeritfront
|
|
830
840
|
|
831
841
|
#make sure the attach class has something going on. We do this after the default stage
|
832
842
|
attach_arr = instaload_sql_output[attach_name]
|
833
|
-
|
843
|
+
|
844
|
+
if attach_arr.nil?
|
845
|
+
Rails.logger.error("attaching table " + attach_name + " was not set")
|
846
|
+
return 0
|
847
|
+
elsif not attach_arr.any?
|
848
|
+
Rails.logger.debug("no items in attach table " + attach_name)
|
849
|
+
return 0
|
850
|
+
end
|
834
851
|
|
835
852
|
# attach class information
|
836
853
|
attach_class = attach_arr.first.class
|
@@ -934,6 +951,14 @@ module DynamicRecordsMeritfront
|
|
934
951
|
end
|
935
952
|
}
|
936
953
|
|
954
|
+
if Rails.logger.level <= 1
|
955
|
+
if as
|
956
|
+
Rails.logger.debug "#{x}/#{attach_arr.count} attached from #{attach_name} as #{as} -> #{base_name}(#{x}/#{base_arr.count})"
|
957
|
+
else
|
958
|
+
Rails.logger.debug "#{x}/#{attach_arr.count} attached from #{attach_name} -> #{base_name}(#{x}/#{base_arr.count})"
|
959
|
+
end
|
960
|
+
end
|
961
|
+
|
937
962
|
return x
|
938
963
|
end
|
939
964
|
alias swiss_attach dynamic_attach
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dynamic-records-meritfront
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.1.
|
4
|
+
version: 3.1.29
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Luke Clancy
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-
|
11
|
+
date: 2023-10-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: hashid-rails
|
@@ -54,7 +54,7 @@ metadata:
|
|
54
54
|
homepage_uri: https://github.com/LukeClancy/dynamic-records-meritfront
|
55
55
|
source_code_uri: https://github.com/LukeClancy/dynamic-records-meritfront
|
56
56
|
changelog_uri: https://github.com/LukeClancy/dynamic-records-meritfront/blob/main/README.md
|
57
|
-
post_install_message:
|
57
|
+
post_install_message:
|
58
58
|
rdoc_options: []
|
59
59
|
require_paths:
|
60
60
|
- lib
|
@@ -69,8 +69,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
69
69
|
- !ruby/object:Gem::Version
|
70
70
|
version: '0'
|
71
71
|
requirements: []
|
72
|
-
rubygems_version: 3.
|
73
|
-
signing_key:
|
72
|
+
rubygems_version: 3.4.10
|
73
|
+
signing_key:
|
74
74
|
specification_version: 4
|
75
75
|
summary: Helpers for active record that allow for more abstract and fine-grained code.
|
76
76
|
test_files: []
|