seed_reaper 0.0.10 → 0.0.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
  SHA256:
3
- metadata.gz: 3aada863ada1f6e625b402b9c792f0e6c4f5ea72e616e67cecab82d2abb32584
4
- data.tar.gz: 71da1d3ed76246f00a0993ddf190a3c66d9286b885ab704356e15c27b59182a9
3
+ metadata.gz: 1f1bb71a4c27c75857498337d66e87344dd5260b52d0d9b4ff4a926e62289646
4
+ data.tar.gz: d0392c169df5f4290dfe1486c4120021345e2e518210200a8ccaf795e3ceff91
5
5
  SHA512:
6
- metadata.gz: b9c7b7134ffde3ad24efce00c50824c8db2c1f5faa84e9ae86499db92fb55a867cb76c168d4f4bb965f5899ddaf1cadd597e41d2206c92b753b164f792fff7fb
7
- data.tar.gz: d68847de1e51073d9a4ce5375ded37b4153b54dac818a1a7cea642c15e837d88db9e05865e6eb821c587bca021ae199ef6fb6e8dff671a1eb0bbb9379b698d8e
6
+ metadata.gz: 59d8038b96b285e7c0a8a2e9594e0178a30445b2cdc991f58fdce290ba7793c57e86d63ba0c9f7b4d869dacd5b7e03a912a9f15cf55b154d1f0efe8c270f10d5
7
+ data.tar.gz: 755b533faf027d73df813d490cb082e21d85f34c91142387b4c79d02acf48cd6d090655bf645a9562fb5417454585499dc2b5c629f76fcb11b2e213105829b91
@@ -40,7 +40,7 @@ module SeedReaper
40
40
  return schema unless instance._reflections[schema.to_s].belongs_to?
41
41
  end
42
42
 
43
- %i[count joins nullify class_name].each do |meta_field|
43
+ %i[count joins nullify class_name table_only].each do |meta_field|
44
44
  define_method meta_field do
45
45
  meta(meta_field)
46
46
  end
@@ -12,7 +12,11 @@ module SeedReaper
12
12
  end
13
13
 
14
14
  def seedify
15
- seedify_collection(base_model, base_config)
15
+ if base_config_evaluator.table_only
16
+ seedify_table_only(@config.first[0])
17
+ else
18
+ seedify_collection(base_model, base_config)
19
+ end
16
20
  end
17
21
 
18
22
  private
@@ -33,6 +37,31 @@ module SeedReaper
33
37
  @base_config_evaluator ||= ConfigEvaluator.new(base_config)
34
38
  end
35
39
 
40
+ def seedify_table_only(name)
41
+ model = (
42
+ Class.new(ActiveRecord::Base) do
43
+ self.table_name = name
44
+ end
45
+ )
46
+
47
+ return unless model.exists?
48
+
49
+ <<~UPSERT
50
+ (
51
+ Class.new(ActiveRecord::Base) do
52
+ self.table_name = :#{name}
53
+ end
54
+ ).insert_all([
55
+ #{
56
+ [].tap do |attr_hashes|
57
+ add_hash = ->(i) { attr_hashes << "{ #{serialize_insert_attrs(i)} }" }
58
+ model.primary_key ? model.find_each(&add_hash) : model.all.each(&add_hash)
59
+ end.join(",\n\s\s")
60
+ }
61
+ ])
62
+ UPSERT
63
+ end
64
+
36
65
  def seedify_collection(collection, config)
37
66
  ce = ConfigEvaluator.new(config)
38
67
  evaluated_collection(collection, ce).reduce('') do |str, instance|
@@ -106,5 +135,11 @@ module SeedReaper
106
135
  attr_str += "\s\s#{k}: #{ValueSerializer.new(v).serialized(nullify: nullify)},\n"
107
136
  end[0...-2]
108
137
  end
138
+
139
+ def serialize_insert_attrs(instance)
140
+ instance.attributes.to_h.map do |(k, v)|
141
+ "#{k}: #{ValueSerializer.new(v).serialized}"
142
+ end.join(', ')
143
+ end
109
144
  end
110
145
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module SeedReaper
4
- VERSION = '0.0.10'
4
+ VERSION = '0.0.13'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: seed_reaper
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.10
4
+ version: 0.0.13
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Butts
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-03-11 00:00:00.000000000 Z
11
+ date: 2022-03-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport