foobara-typescript-remote-command-generator 1.2.6 → 1.3.0
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/CHANGELOG.md +8 -0
- data/lib/foobara/typescript_remote_command_generator.rb +1 -6
- data/src/{remote_generator/generate_typescript.rb → generate_typescript.rb} +13 -4
- data/src/{remote_generator/services → generators}/aggregate_entity_generator.rb +2 -2
- data/src/{remote_generator/services → generators}/aggregate_model_generator.rb +3 -3
- data/src/{remote_generator/services → generators}/atom_entity_generator.rb +3 -3
- data/src/{remote_generator/services → generators}/atom_model_generator.rb +3 -3
- data/src/{remote_generator/services → generators}/auth/access_tokens_generator.rb +1 -1
- data/src/generators/auth/login_command_generator.rb +29 -0
- data/src/{remote_generator/services → generators}/auth/login_generator.rb +4 -2
- data/src/generators/auth/logout_command_generator.rb +29 -0
- data/src/{remote_generator/services → generators}/auth/logout_generator.rb +4 -2
- data/src/{remote_generator/services → generators}/auth/refresh_login_generator.rb +4 -2
- data/src/generators/auth/requires_auth_command_generator.rb +27 -0
- data/src/{remote_generator/services → generators}/auth/requires_auth_generator.rb +4 -2
- data/src/{remote_generator/services → generators}/command_cast_result_generator.rb +33 -25
- data/src/{remote_generator/services → generators}/command_errors_generator.rb +2 -2
- data/src/{remote_generator/services → generators}/command_errors_index_generator.rb +1 -1
- data/src/generators/command_generator.rb +209 -0
- data/src/{remote_generator/services → generators}/command_inputs_generator.rb +1 -1
- data/src/{remote_generator/services → generators}/command_manifest_generator.rb +1 -1
- data/src/{remote_generator/services → generators}/command_result_generator.rb +1 -1
- data/src/{remote_generator/services → generators}/dependency_group.rb +2 -2
- data/src/{remote_generator/services → generators}/domain_config_generator.rb +1 -1
- data/src/{remote_generator/services → generators}/domain_generator.rb +1 -1
- data/src/{remote_generator/services → generators}/domain_manifest_generator.rb +1 -1
- data/src/{remote_generator/services → generators}/entity_generator.rb +1 -1
- data/src/{remote_generator/services → generators}/entity_manifest_generator.rb +1 -1
- data/src/{remote_generator/services → generators}/entity_variants_generator.rb +1 -1
- data/src/{remote_generator/services → generators}/error_generator.rb +1 -1
- data/src/{remote_generator/services → generators}/loaded_entity_generator.rb +1 -1
- data/src/{remote_generator/services → generators}/manifest_generator.rb +1 -1
- data/src/{remote_generator/services → generators}/model_generator.rb +1 -1
- data/src/{remote_generator/services → generators}/model_manifest_generator.rb +1 -1
- data/src/{remote_generator/services → generators}/model_variants_generator.rb +1 -1
- data/src/{remote_generator/services → generators}/organization_config_generator.rb +1 -1
- data/src/{remote_generator/services → generators}/organization_generator.rb +1 -1
- data/src/{remote_generator/services → generators}/organization_manifest_generator.rb +1 -1
- data/src/{remote_generator/services → generators}/processor_class_generator.rb +1 -1
- data/src/generators/remote_command_generator.rb +41 -0
- data/src/{remote_generator/services → generators}/root_manifest_generator.rb +1 -1
- data/src/{remote_generator/services → generators}/type_generator.rb +3 -3
- data/src/{remote_generator/services → generators}/typescript_from_manifest_base_generator.rb +42 -38
- data/src/{remote_generator/services → generators}/unloaded_entity_generator.rb +1 -1
- data/src/remote_generator.rb +21 -0
- data/src/{remote_generator/write_typescript_to_disk.rb → write_typescript_to_disk.rb} +10 -1
- data/templates/Command.ts.erb +39 -1
- data/templates/base/{RemoteCommand.ts → RemoteCommand.ts.erb} +28 -0
- metadata +46 -45
- data/src/remote_generator/services/auth/login_command_generator.rb +0 -17
- data/src/remote_generator/services/auth/logout_command_generator.rb +0 -17
- data/src/remote_generator/services/auth/requires_auth_command_generator.rb +0 -15
- data/src/remote_generator/services/command_generator.rb +0 -87
- /data/src/{remote_generator/association_depth.rb → association_depth.rb} +0 -0
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
require_relative "typescript_from_manifest_base_generator"
|
|
2
|
+
|
|
3
|
+
module Foobara
|
|
4
|
+
module RemoteGenerator
|
|
5
|
+
module Generators
|
|
6
|
+
class CommandGenerator < TypescriptFromManifestBaseGenerator
|
|
7
|
+
alias command_manifest relevant_manifest
|
|
8
|
+
|
|
9
|
+
def target_path
|
|
10
|
+
[*scoped_full_path, "index.ts"]
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def template_path
|
|
14
|
+
"Command.ts.erb"
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def domain_generator
|
|
18
|
+
@domain_generator ||= DomainGenerator.new(domain)
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def organization_generator = domain_generator.organization_generator
|
|
22
|
+
def domain_name = domain_generator.domain_name
|
|
23
|
+
def organization_name = domain_generator.organization_name
|
|
24
|
+
|
|
25
|
+
def errors_in_this_namespace
|
|
26
|
+
@errors_in_this_namespace ||= possible_errors.values.map(&:error).uniq.sort_by(&:error_name).select do |error|
|
|
27
|
+
error.parent&.manifest_path&.map(&:to_s) == manifest_path.map(&:to_s)
|
|
28
|
+
end.map do |error_manifest|
|
|
29
|
+
ErrorGenerator.new(error_manifest)
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def dependencies
|
|
34
|
+
[
|
|
35
|
+
RemoteCommandGenerator.new(Manifest::RootManifest.new(root_manifest)),
|
|
36
|
+
*queries_that_are_dirtied_by_this_command.keys
|
|
37
|
+
]
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def will_define
|
|
41
|
+
ts_instance_path
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def command_errors_index_generator
|
|
45
|
+
CommandErrorsIndexGenerator.new(command_manifest)
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def base_class_path
|
|
49
|
+
"base/RemoteCommand"
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
def base_class_name
|
|
53
|
+
base_class_path.split("/").last
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
def result_json_requires_cast?
|
|
57
|
+
# What types require a cast?
|
|
58
|
+
# :date and :datetime, :model, custom type declaration (check #custom?)
|
|
59
|
+
result_type && type_requires_cast?(result_type)
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
def queries_that_are_dirtied_by_this_command
|
|
63
|
+
return {} if query? || !auto_dirty_queries?
|
|
64
|
+
|
|
65
|
+
return @queries_that_are_dirtied_by_this_command if defined?(@queries_that_are_dirtied_by_this_command)
|
|
66
|
+
|
|
67
|
+
command_result_type = result_type
|
|
68
|
+
|
|
69
|
+
paths_to_data = nil
|
|
70
|
+
|
|
71
|
+
if command_result_type
|
|
72
|
+
command_result_type = command_result_type.to_type if command_result_type.is_a?(Manifest::TypeDeclaration)
|
|
73
|
+
|
|
74
|
+
if command_result_type.detached_entity?
|
|
75
|
+
paths_to_data = { command_result_type => [:outcome, :result, command_result_type.primary_key_name] }
|
|
76
|
+
else
|
|
77
|
+
result_type_associations = Manifest::Model.associations(command_result_type)
|
|
78
|
+
|
|
79
|
+
unless result_type_associations.empty?
|
|
80
|
+
data_path, entity_type = result_type_associations.to_a.first
|
|
81
|
+
paths_to_data = { entity_type => [:outcome, :result, data_path, entity_type.primary_key_name] }
|
|
82
|
+
end
|
|
83
|
+
end
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
if paths_to_data.nil?
|
|
87
|
+
if inputs_type
|
|
88
|
+
inputs_associations = Manifest::Model.associations(inputs_type)
|
|
89
|
+
|
|
90
|
+
unless inputs_associations.empty?
|
|
91
|
+
data_path, entity_type = inputs_associations.to_a.first
|
|
92
|
+
paths_to_data = { entity_type => [:inputs, *data_path] }
|
|
93
|
+
end
|
|
94
|
+
end
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
dirties = {}
|
|
98
|
+
|
|
99
|
+
unless paths_to_data.nil?
|
|
100
|
+
all_queries = Manifest::RootManifest.new(root_manifest).queries.map do |query|
|
|
101
|
+
generator_for(query)
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
paths_to_data.each_pair do |entity_type, path|
|
|
105
|
+
all_queries.each do |query|
|
|
106
|
+
query_inputs_type = query.inputs_type
|
|
107
|
+
|
|
108
|
+
if query_inputs_type
|
|
109
|
+
query_associations = Manifest::Model.associations(query_inputs_type)
|
|
110
|
+
query_associations.each_pair do |query_association_path, query_entity_class|
|
|
111
|
+
query_entity_class = query_entity_class.to_type if query_entity_class.is_a?(Manifest::TypeDeclaration)
|
|
112
|
+
|
|
113
|
+
if query_entity_class == entity_type
|
|
114
|
+
dirties[query] = [path, query_association_path]
|
|
115
|
+
end
|
|
116
|
+
end
|
|
117
|
+
|
|
118
|
+
next if dirties.key?(query)
|
|
119
|
+
end
|
|
120
|
+
|
|
121
|
+
query_result_type = query.result_type
|
|
122
|
+
next unless query_result_type
|
|
123
|
+
|
|
124
|
+
if query_result_type.is_a?(Manifest::TypeDeclaration) && query_result_type.reference?
|
|
125
|
+
query_result_type = query_result_type.to_type
|
|
126
|
+
end
|
|
127
|
+
|
|
128
|
+
if query_result_type == entity_type
|
|
129
|
+
dirties[query] = true
|
|
130
|
+
else
|
|
131
|
+
entity_classes = Manifest::Model.associations(query_result_type).values.uniq
|
|
132
|
+
|
|
133
|
+
entity_classes.each do |query_entity_class|
|
|
134
|
+
query_entity_class = query_entity_class.to_type if query_entity_class.is_a?(Manifest::TypeDeclaration)
|
|
135
|
+
|
|
136
|
+
if query_entity_class == entity_type
|
|
137
|
+
dirties[query] = true
|
|
138
|
+
break
|
|
139
|
+
end
|
|
140
|
+
end
|
|
141
|
+
end
|
|
142
|
+
end
|
|
143
|
+
end
|
|
144
|
+
end
|
|
145
|
+
|
|
146
|
+
@queries_that_are_dirtied_by_this_command = dirties
|
|
147
|
+
end
|
|
148
|
+
|
|
149
|
+
def queries_dirtied_without_inputs
|
|
150
|
+
return @queries_dirtied_without_inputs if defined?(@queries_dirtied_without_inputs)
|
|
151
|
+
|
|
152
|
+
queries_dirtied = []
|
|
153
|
+
|
|
154
|
+
queries_that_are_dirtied_by_this_command.each_pair do |query, value|
|
|
155
|
+
if value == true
|
|
156
|
+
queries_dirtied << query
|
|
157
|
+
end
|
|
158
|
+
end
|
|
159
|
+
|
|
160
|
+
@queries_dirtied_without_inputs = queries_dirtied
|
|
161
|
+
end
|
|
162
|
+
|
|
163
|
+
def queries_dirtied_with_inputs
|
|
164
|
+
return @queries_dirtied_with_inputs if defined?(@queries_dirtied_with_inputs)
|
|
165
|
+
|
|
166
|
+
dirtied_queries = {}
|
|
167
|
+
|
|
168
|
+
queries_that_are_dirtied_by_this_command.each_pair do |query, value|
|
|
169
|
+
if value != true
|
|
170
|
+
dirtied_queries[query] = value
|
|
171
|
+
end
|
|
172
|
+
end
|
|
173
|
+
|
|
174
|
+
@queries_dirtied_with_inputs = dirtied_queries
|
|
175
|
+
end
|
|
176
|
+
|
|
177
|
+
private
|
|
178
|
+
|
|
179
|
+
def type_requires_cast?(type_declaration)
|
|
180
|
+
if type_declaration.is_a?(Manifest::Attributes)
|
|
181
|
+
return false unless type_declaration.has_attribute_declarations?
|
|
182
|
+
return false if type_declaration.attribute_declarations.empty?
|
|
183
|
+
|
|
184
|
+
type_declaration.attribute_declarations.values.any? do |attribute_declaration|
|
|
185
|
+
type_requires_cast?(attribute_declaration)
|
|
186
|
+
end
|
|
187
|
+
elsif type_declaration.is_a?(Manifest::Array)
|
|
188
|
+
element_type = type_declaration.element_type
|
|
189
|
+
element_type && type_requires_cast?(element_type)
|
|
190
|
+
else
|
|
191
|
+
return true if type_declaration.model?
|
|
192
|
+
|
|
193
|
+
type_symbol = type_declaration.type_symbol
|
|
194
|
+
|
|
195
|
+
if type_symbol == :date || type_symbol == :datetime
|
|
196
|
+
return true
|
|
197
|
+
end
|
|
198
|
+
|
|
199
|
+
if type_declaration.custom?
|
|
200
|
+
type_declaration = type_declaration.to_type if type_declaration.is_a?(Manifest::TypeDeclaration)
|
|
201
|
+
base_type = type_declaration.base_type
|
|
202
|
+
type_requires_cast?(base_type)
|
|
203
|
+
end
|
|
204
|
+
end
|
|
205
|
+
end
|
|
206
|
+
end
|
|
207
|
+
end
|
|
208
|
+
end
|
|
209
|
+
end
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
module Foobara
|
|
2
2
|
module RemoteGenerator
|
|
3
|
-
|
|
3
|
+
module Generators
|
|
4
4
|
class DependencyGroup
|
|
5
5
|
class CollisionData
|
|
6
6
|
attr_accessor :points
|
|
@@ -135,7 +135,7 @@ module Foobara
|
|
|
135
135
|
dep != other_dep && name == non_colliding_type_name(other_dep, points)
|
|
136
136
|
end
|
|
137
137
|
|
|
138
|
-
if will_define&.include?(name)
|
|
138
|
+
if will_define&.include?(name) && dep != deps_are_for
|
|
139
139
|
collisions << deps_are_for
|
|
140
140
|
end
|
|
141
141
|
|
|
@@ -2,7 +2,7 @@ require_relative "typescript_from_manifest_base_generator"
|
|
|
2
2
|
|
|
3
3
|
module Foobara
|
|
4
4
|
module RemoteGenerator
|
|
5
|
-
|
|
5
|
+
module Generators
|
|
6
6
|
class ManifestGenerator < TypescriptFromManifestBaseGenerator
|
|
7
7
|
def generate(_elements_to_generate)
|
|
8
8
|
JSON.pretty_generate(relevant_manifest.relevant_manifest)
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
module Foobara
|
|
2
|
+
module RemoteGenerator
|
|
3
|
+
module Generators
|
|
4
|
+
class RemoteCommandGenerator < TypescriptFromManifestBaseGenerator
|
|
5
|
+
def import_destructure
|
|
6
|
+
ts_instance_path.first
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def ts_instance_path
|
|
10
|
+
["RemoteCommand"]
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def ts_instance_full_path
|
|
14
|
+
["RemoteCommand"]
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def template_path
|
|
18
|
+
["base", "RemoteCommand.ts.erb"]
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def hash
|
|
22
|
+
template_path.hash
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def domain_reference
|
|
26
|
+
"global_organization::global_domain"
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
# TODO: awkward to have this here hmmm... maybe create a manifest for these static files?
|
|
30
|
+
# something doesn't feel right about this.
|
|
31
|
+
def domain
|
|
32
|
+
Manifest::Domain.new(root_manifest, [:domain, domain_reference])
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def scoped_full_name
|
|
36
|
+
ts_instance_path.first
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
|
@@ -2,7 +2,7 @@ require_relative "typescript_from_manifest_base_generator"
|
|
|
2
2
|
|
|
3
3
|
module Foobara
|
|
4
4
|
module RemoteGenerator
|
|
5
|
-
|
|
5
|
+
module Generators
|
|
6
6
|
class TypeGenerator < TypescriptFromManifestBaseGenerator
|
|
7
7
|
class << self
|
|
8
8
|
def lru_cache
|
|
@@ -100,13 +100,13 @@ module Foobara
|
|
|
100
100
|
|
|
101
101
|
def model_generators
|
|
102
102
|
@model_generators ||= types_depended_on.select(&:model?).reject(&:builtin?).map do |model|
|
|
103
|
-
|
|
103
|
+
ModelGenerator.new(model)
|
|
104
104
|
end
|
|
105
105
|
end
|
|
106
106
|
|
|
107
107
|
def custom_type_generators
|
|
108
108
|
@custom_type_generators ||= types_depended_on.reject(&:builtin?).reject(&:model?).map do |type|
|
|
109
|
-
|
|
109
|
+
TypeGenerator.new(type)
|
|
110
110
|
end
|
|
111
111
|
end
|
|
112
112
|
|
data/src/{remote_generator/services → generators}/typescript_from_manifest_base_generator.rb
RENAMED
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
|
|
23
23
|
module Foobara
|
|
24
24
|
module RemoteGenerator
|
|
25
|
-
|
|
25
|
+
module Generators
|
|
26
26
|
class TypescriptFromManifestBaseGenerator < Foobara::FilesGenerator
|
|
27
27
|
class << self
|
|
28
28
|
def manifest_to_generator_classes(manifest)
|
|
@@ -30,62 +30,62 @@ module Foobara
|
|
|
30
30
|
when Manifest::Command
|
|
31
31
|
generator_classes = case manifest.full_command_name
|
|
32
32
|
when "Foobara::Auth::RefreshLogin"
|
|
33
|
-
|
|
33
|
+
Auth::RefreshLoginGenerator
|
|
34
34
|
when "Foobara::Auth::Login"
|
|
35
|
-
|
|
35
|
+
Auth::LoginGenerator
|
|
36
36
|
when "Foobara::Auth::Logout"
|
|
37
|
-
|
|
37
|
+
Auth::LogoutGenerator
|
|
38
38
|
when /\bGetCurrentUser$/
|
|
39
|
-
|
|
39
|
+
Auth::RequiresAuthGenerator
|
|
40
40
|
else
|
|
41
41
|
if manifest.requires_authentication?
|
|
42
|
-
|
|
42
|
+
Auth::RequiresAuthGenerator
|
|
43
43
|
else
|
|
44
|
-
|
|
44
|
+
CommandGenerator
|
|
45
45
|
end
|
|
46
46
|
end
|
|
47
47
|
|
|
48
48
|
[
|
|
49
49
|
*generator_classes,
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
50
|
+
CommandInputsGenerator,
|
|
51
|
+
CommandResultGenerator,
|
|
52
|
+
CommandCastResultGenerator,
|
|
53
|
+
CommandErrorsGenerator,
|
|
54
|
+
CommandErrorsIndexGenerator,
|
|
55
|
+
CommandManifestGenerator
|
|
56
56
|
]
|
|
57
57
|
when Manifest::Domain
|
|
58
58
|
[
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
59
|
+
DomainGenerator,
|
|
60
|
+
DomainConfigGenerator,
|
|
61
|
+
DomainManifestGenerator
|
|
62
62
|
]
|
|
63
63
|
when Manifest::Organization
|
|
64
64
|
[
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
65
|
+
OrganizationGenerator,
|
|
66
|
+
OrganizationConfigGenerator,
|
|
67
|
+
OrganizationManifestGenerator
|
|
68
68
|
]
|
|
69
69
|
when Manifest::Entity, Manifest::DetachedEntity
|
|
70
70
|
[
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
71
|
+
EntityGenerator,
|
|
72
|
+
EntityVariantsGenerator,
|
|
73
|
+
EntityManifestGenerator
|
|
74
74
|
]
|
|
75
75
|
when Manifest::Model
|
|
76
76
|
[
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
77
|
+
ModelGenerator,
|
|
78
|
+
ModelVariantsGenerator,
|
|
79
|
+
ModelManifestGenerator
|
|
80
80
|
]
|
|
81
81
|
when Manifest::Error
|
|
82
|
-
|
|
82
|
+
ErrorGenerator
|
|
83
83
|
when Manifest::ProcessorClass
|
|
84
|
-
|
|
84
|
+
ProcessorClassGenerator
|
|
85
85
|
when Manifest::RootManifest
|
|
86
|
-
|
|
86
|
+
RootManifestGenerator
|
|
87
87
|
when Manifest::Type
|
|
88
|
-
|
|
88
|
+
TypeGenerator
|
|
89
89
|
else
|
|
90
90
|
# :nocov:
|
|
91
91
|
raise "Not sure how build a generator for a #{manifest}"
|
|
@@ -94,18 +94,18 @@ module Foobara
|
|
|
94
94
|
end
|
|
95
95
|
end
|
|
96
96
|
|
|
97
|
-
def initialize(relevant_manifest)
|
|
98
|
-
|
|
97
|
+
def initialize(relevant_manifest = (none_given = true))
|
|
98
|
+
if none_given || relevant_manifest.is_a?(Manifest::BaseManifest)
|
|
99
|
+
super
|
|
100
|
+
else
|
|
99
101
|
# :nocov:
|
|
100
102
|
raise ArgumentError, "Expected a Foobara::Manifest, got #{relevant_manifest.class}"
|
|
101
103
|
# :nocov:
|
|
102
104
|
end
|
|
103
|
-
|
|
104
|
-
super
|
|
105
105
|
end
|
|
106
106
|
|
|
107
107
|
def templates_dir
|
|
108
|
-
"#{__dir__}
|
|
108
|
+
"#{__dir__}/../../templates"
|
|
109
109
|
end
|
|
110
110
|
|
|
111
111
|
def parent
|
|
@@ -389,15 +389,15 @@ module Foobara
|
|
|
389
389
|
|
|
390
390
|
generator_class = case association_depth
|
|
391
391
|
when AssociationDepth::AMBIGUOUS
|
|
392
|
-
|
|
392
|
+
ModelGenerator
|
|
393
393
|
when AssociationDepth::ATOM
|
|
394
394
|
if !initial && model.detached_entity?
|
|
395
|
-
|
|
395
|
+
UnloadedEntityGenerator
|
|
396
396
|
else
|
|
397
|
-
|
|
397
|
+
AtomModelGenerator
|
|
398
398
|
end
|
|
399
399
|
when AssociationDepth::AGGREGATE
|
|
400
|
-
|
|
400
|
+
AggregateModelGenerator
|
|
401
401
|
else
|
|
402
402
|
# :nocov:
|
|
403
403
|
raise "Bad association_depth: #{association_depth}"
|
|
@@ -431,6 +431,10 @@ module Foobara
|
|
|
431
431
|
path = super
|
|
432
432
|
path.empty? ? "./" : path
|
|
433
433
|
end
|
|
434
|
+
|
|
435
|
+
def auto_dirty_queries?
|
|
436
|
+
RemoteGenerator.auto_dirty_queries?
|
|
437
|
+
end
|
|
434
438
|
end
|
|
435
439
|
end
|
|
436
440
|
end
|