fume-aloader 0.1.3 → 0.1.6
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/lib/fume/aloader/association_loader.rb +11 -5
- data/lib/fume/aloader/record_addons.rb +9 -2
- data/lib/fume/aloader/relation_addons.rb +1 -6
- data/lib/fume/aloader/relationship/base_single.rb +1 -6
- data/lib/fume/aloader/relationship/belongs_to_polymorphic.rb +1 -6
- data/lib/fume/aloader/relationship/has_many.rb +1 -6
- data/lib/fume/aloader/version.rb +1 -1
- 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: 6dc81c2dd3679bbead750f74972bc067d9ef01b7780247e77c655169916714e3
|
4
|
+
data.tar.gz: caaa1cc9f14018a031847e3968103f5384a98614ab12b5d891a510d38eb762f2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9ad64312dc49a07a91f3f0c675f89aa2290c568f062d01fc56b255e93cac4bb31ce034a872933299a59af44c4c3d9b5f9f567198a690eb6011adcdc2fa2f50ee
|
7
|
+
data.tar.gz: 0050c9b262182d57ce8673b7880a15fe4cda47856a0f401c4e1e2623c7c6e43906eae69e7c0333332afb0c00aed36132b613ad0f2e36a065b73b9a4a50b4d6a6
|
@@ -10,15 +10,22 @@ module Fume::Aloader
|
|
10
10
|
attr_accessor :cached_values
|
11
11
|
attr_accessor :preload_values
|
12
12
|
|
13
|
-
def initialize(records,
|
14
|
-
self.profile = :default
|
13
|
+
def initialize(records, options = {}, &block)
|
14
|
+
self.profile = options[:preset] || :default
|
15
15
|
self.presets = {}
|
16
|
-
self.klass = klass || records.klass
|
16
|
+
self.klass = options[:klass] || records.klass
|
17
17
|
|
18
18
|
self.cached_values = {}
|
19
19
|
self.preload_values = {}
|
20
20
|
self.records = records
|
21
|
+
|
21
22
|
instance_exec(&block) if block
|
23
|
+
|
24
|
+
if options[:inject]
|
25
|
+
self.records.each do |record|
|
26
|
+
record.aloader = self
|
27
|
+
end
|
28
|
+
end
|
22
29
|
end
|
23
30
|
|
24
31
|
def find_cached_value(record, name)
|
@@ -196,8 +203,7 @@ module Fume::Aloader
|
|
196
203
|
return attribute[:scope_includes] || [] if attr_preset_name.nil?
|
197
204
|
|
198
205
|
association_klass ||= klass.new.association(name).reflection.klass
|
199
|
-
loader = association_klass.al_build([])
|
200
|
-
loader.active(attr_preset_name)
|
206
|
+
loader = association_klass.al_build([], preset: attr_preset_name)
|
201
207
|
loader.build_profile_scope_includes
|
202
208
|
end
|
203
209
|
|
@@ -20,11 +20,18 @@ module Fume::Aloader
|
|
20
20
|
end
|
21
21
|
end
|
22
22
|
|
23
|
+
def al_build(preset = :default)
|
24
|
+
return self.aloader if self.aloader
|
25
|
+
self.aloader = self.class.al_build([ self ], preset: preset)
|
26
|
+
end
|
27
|
+
|
23
28
|
module ClassMethods
|
24
29
|
def aloader_init(&block)
|
25
|
-
define_singleton_method :al_build do |records|
|
30
|
+
define_singleton_method :al_build do |records, options = {}|
|
26
31
|
dsl = DSL.new(&block)
|
27
|
-
dsl.apply_config(AssociationLoader.new(records, self))
|
32
|
+
loader = dsl.apply_config(AssociationLoader.new(records, { klass: self }.merge(options)))
|
33
|
+
|
34
|
+
loader
|
28
35
|
end
|
29
36
|
end
|
30
37
|
end
|
@@ -10,7 +10,7 @@ module Fume::Aloader
|
|
10
10
|
end
|
11
11
|
|
12
12
|
def spawn(*args)
|
13
|
-
result =
|
13
|
+
result = super
|
14
14
|
result.aloader = nil
|
15
15
|
result.al_init_loader
|
16
16
|
result.aloader&.spawn_from(self.aloader) if self.aloader
|
@@ -46,11 +46,6 @@ module Fume::Aloader
|
|
46
46
|
end
|
47
47
|
|
48
48
|
def al_to_scope(preset = :default)
|
49
|
-
if self.is_a?(ActiveRecord::Associations::CollectionProxy)
|
50
|
-
scope.al_to_scope(preset)
|
51
|
-
return
|
52
|
-
end
|
53
|
-
|
54
49
|
al_init_loader
|
55
50
|
self.aloader.active(preset)
|
56
51
|
result = self.aloader.apply_profile_scope_includes(self)
|
@@ -11,13 +11,8 @@ module Fume::Aloader
|
|
11
11
|
def loaders_init(parents, preset)
|
12
12
|
values = parents.map { |it| it.send(reflection.name) }.compact
|
13
13
|
return [] if !reflection.klass.respond_to?(:al_build)
|
14
|
-
loader = reflection.klass.al_build(values)
|
14
|
+
loader = reflection.klass.al_build(values, preset: preset, inject: true)
|
15
15
|
|
16
|
-
values.each do |value|
|
17
|
-
value.aloader = loader
|
18
|
-
end
|
19
|
-
|
20
|
-
loader.active(preset) if preset
|
21
16
|
[ loader ]
|
22
17
|
end
|
23
18
|
end
|
@@ -59,13 +59,8 @@ module Fume::Aloader
|
|
59
59
|
values_mapping.each do |type, values|
|
60
60
|
loader_klass = type.constantize
|
61
61
|
next if !loader_klass.respond_to?(:al_build)
|
62
|
-
loader = loader_klass.al_build(values)
|
62
|
+
loader = loader_klass.al_build(values, preset: preset, inject: true)
|
63
63
|
|
64
|
-
values.each do |value|
|
65
|
-
value.aloader = loader
|
66
|
-
end
|
67
|
-
|
68
|
-
loader.active(preset) if preset
|
69
64
|
loader
|
70
65
|
end
|
71
66
|
end
|
@@ -22,13 +22,8 @@ module Fume::Aloader
|
|
22
22
|
def loaders_init(parents, preset)
|
23
23
|
values = parents.flat_map { |it| it.send(reflection.name) }.compact
|
24
24
|
return [] if !reflection.klass.respond_to?(:al_build)
|
25
|
-
loader = reflection.klass.al_build(values)
|
25
|
+
loader = reflection.klass.al_build(values, preset: preset, inject: true)
|
26
26
|
|
27
|
-
values.each do |value|
|
28
|
-
value.aloader = loader
|
29
|
-
end
|
30
|
-
|
31
|
-
loader.active(preset) if preset
|
32
27
|
[ loader ]
|
33
28
|
end
|
34
29
|
end
|
data/lib/fume/aloader/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fume-aloader
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- sunteya
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-05
|
11
|
+
date: 2022-07-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -136,7 +136,7 @@ dependencies:
|
|
136
136
|
- - "~>"
|
137
137
|
- !ruby/object:Gem::Version
|
138
138
|
version: 2.20.0
|
139
|
-
description:
|
139
|
+
description:
|
140
140
|
email:
|
141
141
|
- sunteya@gmail.com
|
142
142
|
executables: []
|
@@ -167,7 +167,7 @@ homepage: https://github.com/sunteya/fume-aloader
|
|
167
167
|
licenses:
|
168
168
|
- MIT
|
169
169
|
metadata: {}
|
170
|
-
post_install_message:
|
170
|
+
post_install_message:
|
171
171
|
rdoc_options: []
|
172
172
|
require_paths:
|
173
173
|
- lib
|
@@ -183,7 +183,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
183
183
|
version: '0'
|
184
184
|
requirements: []
|
185
185
|
rubygems_version: 3.1.6
|
186
|
-
signing_key:
|
186
|
+
signing_key:
|
187
187
|
specification_version: 4
|
188
188
|
summary: a configurable eager loading plugin for rails
|
189
189
|
test_files: []
|