deimos-ruby 1.23.3 → 1.24.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +7 -0
- data/docs/CONFIGURATION.md +2 -1
- data/lib/deimos/config/configuration.rb +7 -1
- data/lib/deimos/utils/schema_class.rb +18 -3
- data/lib/deimos/version.rb +1 -1
- data/lib/generators/deimos/schema_class_generator.rb +9 -2
- data/regenerate_test_schema_classes.rb +13 -2
- data/spec/active_record_batch_consumer_spec.rb +1 -1
- data/spec/active_record_consumer_spec.rb +1 -1
- data/spec/active_record_producer_spec.rb +1 -1
- data/spec/batch_consumer_spec.rb +1 -1
- data/spec/consumer_spec.rb +2 -2
- data/spec/generators/schema_class_generator_spec.rb +18 -1
- data/spec/schemas/com/my-namespace/my-suborg/MyLongNamespaceSchema.avsc +18 -0
- data/spec/schemas/my_namespace/generated.rb +1 -1
- data/spec/schemas/my_namespace/my_long_namespace_schema.rb +48 -0
- data/spec/schemas/my_namespace/my_nested_schema.rb +1 -1
- data/spec/schemas/my_namespace/my_schema.rb +1 -1
- data/spec/schemas/my_namespace/my_schema_with_circular_reference.rb +1 -1
- data/spec/schemas/my_namespace/my_schema_with_complex_type.rb +2 -2
- data/spec/schemas/my_namespace/my_updated_schema.rb +2 -1
- data/spec/schemas/{request → my_namespace/request}/create_topic.rb +2 -2
- data/spec/schemas/{request → my_namespace/request}/index.rb +2 -2
- data/spec/schemas/{request → my_namespace/request}/update_request.rb +2 -2
- data/spec/schemas/{response → my_namespace/response}/create_topic.rb +2 -2
- data/spec/schemas/{response → my_namespace/response}/index.rb +2 -2
- data/spec/schemas/{response → my_namespace/response}/update_response.rb +2 -2
- data/spec/snapshots/consumers-no-nest.snap +44 -0
- data/spec/snapshots/consumers.snap +44 -0
- data/spec/snapshots/consumers_and_producers-no-nest.snap +44 -0
- data/spec/snapshots/consumers_and_producers.snap +44 -0
- data/spec/snapshots/consumers_circular-no-nest.snap +44 -0
- data/spec/snapshots/consumers_circular.snap +44 -0
- data/spec/snapshots/consumers_complex_types-no-nest.snap +44 -0
- data/spec/snapshots/consumers_complex_types.snap +44 -0
- data/spec/snapshots/consumers_nested-no-nest.snap +44 -0
- data/spec/snapshots/consumers_nested.snap +44 -0
- data/spec/snapshots/namespace_folders.snap +254 -210
- data/spec/snapshots/namespace_map.snap +1450 -0
- data/spec/snapshots/producers_with_key-no-nest.snap +44 -0
- data/spec/snapshots/producers_with_key.snap +44 -0
- metadata +20 -14
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 391cad2b23e7a6ef37106dcc5403af4ef5b62a82c1a6189e712fb3bc339613d1
|
4
|
+
data.tar.gz: 2bbb4468ee975158489ea797ee67c636d1c5da88cda8b10b33923b4410459178
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 48f37dc3bf2d016bc8806ccf26def976af003a4a8ebd46dad37e080fdeb9489f0bd3993747feda26a6e37d997b24f169554bb587e8d7ca88af6de85cf41851dd
|
7
|
+
data.tar.gz: ccee77567b4599bacc341e25f8c653a3f4ce21252c39dfb9849ffc2005fe44dc58aaa23537bb636f1545b1a691156225f66e1a909949b0bafb8440efa5269c4e
|
data/CHANGELOG.md
CHANGED
@@ -7,6 +7,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
7
7
|
|
8
8
|
## UNRELEASED
|
9
9
|
|
10
|
+
# 1.24.0 - 2024-02-26
|
11
|
+
|
12
|
+
***BREAKING CHANGE****
|
13
|
+
|
14
|
+
- Feature: Rename configuration option `generate_namespace_folders` to `use_full_namespace`. This will now use the entire namespace when generating schema classes
|
15
|
+
- Feature: Add configuration option `schema_namespace_map` to enable full control over the namespace for generated schema classes. Requires `use_full_namespace`
|
16
|
+
|
10
17
|
# 1.23.3 - 2024-01-25
|
11
18
|
- Feature: Add configuration to skip messages that are too large to publish via DB poller.
|
12
19
|
|
data/docs/CONFIGURATION.md
CHANGED
@@ -210,7 +210,8 @@ schema.path|nil|Local path to find your schemas.
|
|
210
210
|
schema.use_schema_classes|false|Set this to true to use generated schema classes in your application.
|
211
211
|
schema.generated_class_path|`app/lib/schema_classes`|Local path to generated schema classes.
|
212
212
|
schema.nest_child_schemas|false|Set to true to nest subschemas within the generated class for the parent schema.
|
213
|
-
schema.
|
213
|
+
schema.use_full_namespace|false|Set to true to generate folders for schemas matching the full namespace.
|
214
|
+
schema.schema_namespace_map|{}|A map of namespace prefixes to base module name(s). Example: { 'com.mycompany.suborg' => ['SchemaClasses'] }. Requires `use_full_namespace` to be true.
|
214
215
|
|
215
216
|
## Database Producer Configuration
|
216
217
|
|
@@ -380,7 +380,13 @@ module Deimos # rubocop:disable Metrics/ModuleLength
|
|
380
380
|
|
381
381
|
# Set to true to generate folders matching the last part of the schema namespace.
|
382
382
|
# @return [Boolean]
|
383
|
-
setting :
|
383
|
+
setting :use_full_namespace, false
|
384
|
+
|
385
|
+
# Use this option to reduce nesting when using use_full_namespace.
|
386
|
+
# For example: { 'com.mycompany.suborg' => 'SchemaClasses' }
|
387
|
+
# would replace a prefixed with the given key with the module name SchemaClasses.
|
388
|
+
# @return [Hash]
|
389
|
+
setting :schema_namespace_map, {}
|
384
390
|
end
|
385
391
|
|
386
392
|
# The configured metrics provider.
|
@@ -10,10 +10,25 @@ module Deimos
|
|
10
10
|
# @return [Array<String>]
|
11
11
|
def modules_for(namespace)
|
12
12
|
modules = ['Schemas']
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
namespace_override = nil
|
14
|
+
module_namespace = namespace
|
15
|
+
|
16
|
+
if Deimos.config.schema.use_full_namespace
|
17
|
+
if Deimos.config.schema.schema_namespace_map.present?
|
18
|
+
namespace_keys = Deimos.config.schema.schema_namespace_map.keys.sort_by { |k| -k.length }
|
19
|
+
namespace_override = namespace_keys.find { |k| module_namespace.include?(k) }
|
20
|
+
end
|
21
|
+
|
22
|
+
if namespace_override.present?
|
23
|
+
# override default module
|
24
|
+
modules = Array(Deimos.config.schema.schema_namespace_map[namespace_override])
|
25
|
+
module_namespace = module_namespace.gsub(/#{namespace_override}\.?/, '')
|
26
|
+
end
|
27
|
+
|
28
|
+
namespace_folders = module_namespace.split('.').map { |f| f.underscore.camelize }
|
29
|
+
modules.concat(namespace_folders) if namespace_folders.any?
|
16
30
|
end
|
31
|
+
|
17
32
|
modules
|
18
33
|
end
|
19
34
|
|
data/lib/deimos/version.rb
CHANGED
@@ -121,9 +121,16 @@ module Deimos
|
|
121
121
|
@main_class_definition = class_template
|
122
122
|
|
123
123
|
file_prefix = schema.name.underscore.singularize
|
124
|
-
if Deimos.config.schema.
|
125
|
-
|
124
|
+
if Deimos.config.schema.use_full_namespace
|
125
|
+
# Use entire namespace for folders
|
126
|
+
# but don't add directories that are already in the path
|
127
|
+
directories = @modules.map(&:underscore).select do |m|
|
128
|
+
Deimos.config.schema.generated_class_path.exclude?(m)
|
129
|
+
end
|
130
|
+
|
131
|
+
file_prefix = "#{directories.join('/')}/#{file_prefix}"
|
126
132
|
end
|
133
|
+
|
127
134
|
filename = "#{Deimos.config.schema.generated_class_path}/#{file_prefix}.rb"
|
128
135
|
template(SCHEMA_CLASS_FILE, filename, force: true)
|
129
136
|
end
|
@@ -21,8 +21,11 @@ Deimos.configure do |deimos_config|
|
|
21
21
|
deimos_config.schema.path = "spec/schemas"
|
22
22
|
deimos_config.schema.backend = :avro_validation
|
23
23
|
deimos_config.schema.generated_class_path = './spec/schemas'
|
24
|
-
deimos_config.schema.
|
25
|
-
deimos_config.schema.
|
24
|
+
deimos_config.schema.use_full_namespace = true
|
25
|
+
deimos_config.schema.schema_namespace_map = {
|
26
|
+
'com' => 'Schemas',
|
27
|
+
'com.my-namespace.my-suborg' => %w(Schemas MyNamespace)
|
28
|
+
}
|
26
29
|
|
27
30
|
consumer do
|
28
31
|
class_name 'MyConsumer'
|
@@ -56,6 +59,14 @@ Deimos.configure do |deimos_config|
|
|
56
59
|
key_config field: :test_id
|
57
60
|
end
|
58
61
|
|
62
|
+
consumer do
|
63
|
+
class_name 'MyConsumer'
|
64
|
+
topic 'MyTopic'
|
65
|
+
schema 'MyLongNamespaceSchema'
|
66
|
+
namespace 'com.my-namespace.my-suborg'
|
67
|
+
key_config field: :test_id
|
68
|
+
end
|
69
|
+
|
59
70
|
producer do
|
60
71
|
class_name 'MyConsumer'
|
61
72
|
topic 'MyTopic'
|
@@ -143,7 +143,7 @@ module ActiveRecordConsumerTest
|
|
143
143
|
before(:each) do
|
144
144
|
Deimos.configure do |config|
|
145
145
|
config.schema.use_schema_classes = use_schema_classes
|
146
|
-
config.schema.
|
146
|
+
config.schema.use_full_namespace = true
|
147
147
|
end
|
148
148
|
end
|
149
149
|
|
@@ -71,7 +71,7 @@ describe Deimos::ActiveRecordProducer do
|
|
71
71
|
before(:each) do
|
72
72
|
Deimos.configure do |config|
|
73
73
|
config.schema.use_schema_classes = use_schema_classes
|
74
|
-
config.schema.
|
74
|
+
config.schema.use_full_namespace = true
|
75
75
|
end
|
76
76
|
end
|
77
77
|
|
data/spec/batch_consumer_spec.rb
CHANGED
data/spec/consumer_spec.rb
CHANGED
@@ -31,7 +31,7 @@ module ConsumerTest
|
|
31
31
|
before(:each) do
|
32
32
|
Deimos.configure do |config|
|
33
33
|
config.schema.use_schema_classes = use_schema_classes
|
34
|
-
config.schema.
|
34
|
+
config.schema.use_full_namespace = true
|
35
35
|
end
|
36
36
|
end
|
37
37
|
|
@@ -138,7 +138,7 @@ module ConsumerTest
|
|
138
138
|
before(:each) do
|
139
139
|
Deimos.configure do |config|
|
140
140
|
config.schema.use_schema_classes = true
|
141
|
-
config.schema.
|
141
|
+
config.schema.use_full_namespace = true
|
142
142
|
end
|
143
143
|
end
|
144
144
|
|
@@ -217,13 +217,30 @@ RSpec.describe Deimos::Generators::SchemaClassGenerator do
|
|
217
217
|
|
218
218
|
context 'with namespace folders' do
|
219
219
|
it 'should generate the correct classes' do
|
220
|
-
Deimos.with_config('schema.
|
220
|
+
Deimos.with_config('schema.use_full_namespace' => true) do
|
221
221
|
described_class.start
|
222
222
|
expect(files).to match_snapshot('namespace_folders', snapshot_serializer: MultiFileSerializer)
|
223
223
|
end
|
224
224
|
end
|
225
225
|
end
|
226
226
|
|
227
|
+
context 'with namespace map' do
|
228
|
+
it 'should generate the correct classes' do
|
229
|
+
Deimos.with_config(
|
230
|
+
{
|
231
|
+
'schema.use_full_namespace' => true,
|
232
|
+
'schema.schema_namespace_map' => {
|
233
|
+
'com' => 'Schemas',
|
234
|
+
'com.my-namespace.my-suborg' => %w(Schemas MyNamespace)
|
235
|
+
}
|
236
|
+
}
|
237
|
+
) do
|
238
|
+
described_class.start
|
239
|
+
expect(files).to match_snapshot('namespace_map', snapshot_serializer: MultiFileSerializer)
|
240
|
+
end
|
241
|
+
end
|
242
|
+
end
|
243
|
+
|
227
244
|
context 'nested true' do
|
228
245
|
it 'should generate the correct classes' do
|
229
246
|
Deimos.with_config('schema.nest_child_schemas' => true) do
|
@@ -0,0 +1,18 @@
|
|
1
|
+
{
|
2
|
+
"namespace": "com.my-namespace.my-suborg",
|
3
|
+
"name": "MyLongNamespaceSchema",
|
4
|
+
"type": "record",
|
5
|
+
"doc": "Test schema",
|
6
|
+
"fields": [
|
7
|
+
{
|
8
|
+
"name": "test_id",
|
9
|
+
"type": "string",
|
10
|
+
"doc": "test string"
|
11
|
+
},
|
12
|
+
{
|
13
|
+
"name": "some_int",
|
14
|
+
"type": "int",
|
15
|
+
"doc": "test int"
|
16
|
+
}
|
17
|
+
]
|
18
|
+
}
|
@@ -0,0 +1,48 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# This file is autogenerated by Deimos, Do NOT modify
|
4
|
+
module Schemas; module MyNamespace
|
5
|
+
### Primary Schema Class ###
|
6
|
+
# Autogenerated Schema for Record at com.my-namespace.my-suborg.MyLongNamespaceSchema
|
7
|
+
class MyLongNamespaceSchema < Deimos::SchemaClass::Record
|
8
|
+
|
9
|
+
### Attribute Accessors ###
|
10
|
+
# @return [String]
|
11
|
+
attr_accessor :test_id
|
12
|
+
# @return [Integer]
|
13
|
+
attr_accessor :some_int
|
14
|
+
|
15
|
+
# @override
|
16
|
+
def initialize(test_id: nil,
|
17
|
+
some_int: nil)
|
18
|
+
super
|
19
|
+
self.test_id = test_id
|
20
|
+
self.some_int = some_int
|
21
|
+
end
|
22
|
+
|
23
|
+
# @override
|
24
|
+
def schema
|
25
|
+
'MyLongNamespaceSchema'
|
26
|
+
end
|
27
|
+
|
28
|
+
# @override
|
29
|
+
def namespace
|
30
|
+
'com.my-namespace.my-suborg'
|
31
|
+
end
|
32
|
+
|
33
|
+
def self.tombstone(key)
|
34
|
+
record = self.allocate
|
35
|
+
record.tombstone_key = key
|
36
|
+
record.test_id = key
|
37
|
+
record
|
38
|
+
end
|
39
|
+
|
40
|
+
# @override
|
41
|
+
def as_json(_opts={})
|
42
|
+
{
|
43
|
+
'test_id' => @test_id,
|
44
|
+
'some_int' => @some_int
|
45
|
+
}
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end; end
|
@@ -9,7 +9,7 @@ module Schemas; module MyNamespace
|
|
9
9
|
### Secondary Schema Classes ###
|
10
10
|
# Autogenerated Schema for Record at com.my-namespace.ARecord
|
11
11
|
class ARecord < Deimos::SchemaClass::Record
|
12
|
-
|
12
|
+
|
13
13
|
### Attribute Accessors ###
|
14
14
|
# @return [String]
|
15
15
|
attr_accessor :a_record_field
|
@@ -185,7 +185,7 @@ module Schemas; module MyNamespace
|
|
185
185
|
end
|
186
186
|
|
187
187
|
def self.tombstone(key)
|
188
|
-
record = self.
|
188
|
+
record = self.allocate
|
189
189
|
record.tombstone_key = key
|
190
190
|
record.test_id = key
|
191
191
|
record
|
@@ -1,7 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
# This file is autogenerated by Deimos, Do NOT modify
|
4
|
-
module Schemas; module MyNamespace
|
4
|
+
module Schemas; module Com; module MyNamespace
|
5
5
|
### Primary Schema Class ###
|
6
6
|
# Autogenerated Schema for Record at com.my-namespace.MySchema
|
7
7
|
class MyUpdatedSchema < Schemas::MyNamespace::MySchema
|
@@ -16,3 +16,4 @@ module Schemas; module MyNamespace
|
|
16
16
|
end
|
17
17
|
end
|
18
18
|
end
|
19
|
+
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
# This file is autogenerated by Deimos, Do NOT modify
|
4
|
-
module Schemas; module Request
|
4
|
+
module Schemas; module MyNamespace; module Request
|
5
5
|
### Primary Schema Class ###
|
6
6
|
# Autogenerated Schema for Record at com.my-namespace.request.CreateTopic
|
7
7
|
class CreateTopic < Deimos::SchemaClass::Record
|
@@ -33,4 +33,4 @@ module Schemas; module Request
|
|
33
33
|
}
|
34
34
|
end
|
35
35
|
end
|
36
|
-
end; end
|
36
|
+
end; end; end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
# This file is autogenerated by Deimos, Do NOT modify
|
4
|
-
module Schemas; module Request
|
4
|
+
module Schemas; module MyNamespace; module Request
|
5
5
|
### Primary Schema Class ###
|
6
6
|
# Autogenerated Schema for Record at com.my-namespace.request.Index
|
7
7
|
class Index < Deimos::SchemaClass::Record
|
@@ -33,4 +33,4 @@ module Schemas; module Request
|
|
33
33
|
}
|
34
34
|
end
|
35
35
|
end
|
36
|
-
end; end
|
36
|
+
end; end; end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
# This file is autogenerated by Deimos, Do NOT modify
|
4
|
-
module Schemas; module Request
|
4
|
+
module Schemas; module MyNamespace; module Request
|
5
5
|
### Primary Schema Class ###
|
6
6
|
# Autogenerated Schema for Record at com.my-namespace.request.UpdateRequest
|
7
7
|
class UpdateRequest < Deimos::SchemaClass::Record
|
@@ -33,4 +33,4 @@ module Schemas; module Request
|
|
33
33
|
}
|
34
34
|
end
|
35
35
|
end
|
36
|
-
end; end
|
36
|
+
end; end; end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
# This file is autogenerated by Deimos, Do NOT modify
|
4
|
-
module Schemas; module Response
|
4
|
+
module Schemas; module MyNamespace; module Response
|
5
5
|
### Primary Schema Class ###
|
6
6
|
# Autogenerated Schema for Record at com.my-namespace.response.CreateTopic
|
7
7
|
class CreateTopic < Deimos::SchemaClass::Record
|
@@ -33,4 +33,4 @@ module Schemas; module Response
|
|
33
33
|
}
|
34
34
|
end
|
35
35
|
end
|
36
|
-
end; end
|
36
|
+
end; end; end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
# This file is autogenerated by Deimos, Do NOT modify
|
4
|
-
module Schemas; module Response
|
4
|
+
module Schemas; module MyNamespace; module Response
|
5
5
|
### Primary Schema Class ###
|
6
6
|
# Autogenerated Schema for Record at com.my-namespace.response.Index
|
7
7
|
class Index < Deimos::SchemaClass::Record
|
@@ -33,4 +33,4 @@ module Schemas; module Response
|
|
33
33
|
}
|
34
34
|
end
|
35
35
|
end
|
36
|
-
end; end
|
36
|
+
end; end; end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
# This file is autogenerated by Deimos, Do NOT modify
|
4
|
-
module Schemas; module Response
|
4
|
+
module Schemas; module MyNamespace; module Response
|
5
5
|
### Primary Schema Class ###
|
6
6
|
# Autogenerated Schema for Record at com.my-namespace.response.UpdateResponse
|
7
7
|
class UpdateResponse < Deimos::SchemaClass::Record
|
@@ -33,4 +33,4 @@ module Schemas; module Response
|
|
33
33
|
}
|
34
34
|
end
|
35
35
|
end
|
36
|
-
end; end
|
36
|
+
end; end; end
|
@@ -267,6 +267,50 @@ module Schemas
|
|
267
267
|
end
|
268
268
|
|
269
269
|
|
270
|
+
spec/app/lib/schema_classes/my_long_namespace_schema.rb:
|
271
|
+
# frozen_string_literal: true
|
272
|
+
|
273
|
+
# This file is autogenerated by Deimos, Do NOT modify
|
274
|
+
module Schemas
|
275
|
+
### Primary Schema Class ###
|
276
|
+
# Autogenerated Schema for Record at com.my-namespace.my-suborg.MyLongNamespaceSchema
|
277
|
+
class MyLongNamespaceSchema < Deimos::SchemaClass::Record
|
278
|
+
|
279
|
+
### Attribute Accessors ###
|
280
|
+
# @return [String]
|
281
|
+
attr_accessor :test_id
|
282
|
+
# @return [Integer]
|
283
|
+
attr_accessor :some_int
|
284
|
+
|
285
|
+
# @override
|
286
|
+
def initialize(test_id: nil,
|
287
|
+
some_int: nil)
|
288
|
+
super
|
289
|
+
self.test_id = test_id
|
290
|
+
self.some_int = some_int
|
291
|
+
end
|
292
|
+
|
293
|
+
# @override
|
294
|
+
def schema
|
295
|
+
'MyLongNamespaceSchema'
|
296
|
+
end
|
297
|
+
|
298
|
+
# @override
|
299
|
+
def namespace
|
300
|
+
'com.my-namespace.my-suborg'
|
301
|
+
end
|
302
|
+
|
303
|
+
# @override
|
304
|
+
def as_json(_opts={})
|
305
|
+
{
|
306
|
+
'test_id' => @test_id,
|
307
|
+
'some_int' => @some_int
|
308
|
+
}
|
309
|
+
end
|
310
|
+
end
|
311
|
+
end
|
312
|
+
|
313
|
+
|
270
314
|
spec/app/lib/schema_classes/my_nested_record.rb:
|
271
315
|
# frozen_string_literal: true
|
272
316
|
|
@@ -234,6 +234,50 @@ module Schemas
|
|
234
234
|
end
|
235
235
|
|
236
236
|
|
237
|
+
spec/app/lib/schema_classes/my_long_namespace_schema.rb:
|
238
|
+
# frozen_string_literal: true
|
239
|
+
|
240
|
+
# This file is autogenerated by Deimos, Do NOT modify
|
241
|
+
module Schemas
|
242
|
+
### Primary Schema Class ###
|
243
|
+
# Autogenerated Schema for Record at com.my-namespace.my-suborg.MyLongNamespaceSchema
|
244
|
+
class MyLongNamespaceSchema < Deimos::SchemaClass::Record
|
245
|
+
|
246
|
+
### Attribute Accessors ###
|
247
|
+
# @return [String]
|
248
|
+
attr_accessor :test_id
|
249
|
+
# @return [Integer]
|
250
|
+
attr_accessor :some_int
|
251
|
+
|
252
|
+
# @override
|
253
|
+
def initialize(test_id: nil,
|
254
|
+
some_int: nil)
|
255
|
+
super
|
256
|
+
self.test_id = test_id
|
257
|
+
self.some_int = some_int
|
258
|
+
end
|
259
|
+
|
260
|
+
# @override
|
261
|
+
def schema
|
262
|
+
'MyLongNamespaceSchema'
|
263
|
+
end
|
264
|
+
|
265
|
+
# @override
|
266
|
+
def namespace
|
267
|
+
'com.my-namespace.my-suborg'
|
268
|
+
end
|
269
|
+
|
270
|
+
# @override
|
271
|
+
def as_json(_opts={})
|
272
|
+
{
|
273
|
+
'test_id' => @test_id,
|
274
|
+
'some_int' => @some_int
|
275
|
+
}
|
276
|
+
end
|
277
|
+
end
|
278
|
+
end
|
279
|
+
|
280
|
+
|
237
281
|
spec/app/lib/schema_classes/my_nested_schema.rb:
|
238
282
|
# frozen_string_literal: true
|
239
283
|
|
@@ -267,6 +267,50 @@ module Schemas
|
|
267
267
|
end
|
268
268
|
|
269
269
|
|
270
|
+
spec/app/lib/schema_classes/my_long_namespace_schema.rb:
|
271
|
+
# frozen_string_literal: true
|
272
|
+
|
273
|
+
# This file is autogenerated by Deimos, Do NOT modify
|
274
|
+
module Schemas
|
275
|
+
### Primary Schema Class ###
|
276
|
+
# Autogenerated Schema for Record at com.my-namespace.my-suborg.MyLongNamespaceSchema
|
277
|
+
class MyLongNamespaceSchema < Deimos::SchemaClass::Record
|
278
|
+
|
279
|
+
### Attribute Accessors ###
|
280
|
+
# @return [String]
|
281
|
+
attr_accessor :test_id
|
282
|
+
# @return [Integer]
|
283
|
+
attr_accessor :some_int
|
284
|
+
|
285
|
+
# @override
|
286
|
+
def initialize(test_id: nil,
|
287
|
+
some_int: nil)
|
288
|
+
super
|
289
|
+
self.test_id = test_id
|
290
|
+
self.some_int = some_int
|
291
|
+
end
|
292
|
+
|
293
|
+
# @override
|
294
|
+
def schema
|
295
|
+
'MyLongNamespaceSchema'
|
296
|
+
end
|
297
|
+
|
298
|
+
# @override
|
299
|
+
def namespace
|
300
|
+
'com.my-namespace.my-suborg'
|
301
|
+
end
|
302
|
+
|
303
|
+
# @override
|
304
|
+
def as_json(_opts={})
|
305
|
+
{
|
306
|
+
'test_id' => @test_id,
|
307
|
+
'some_int' => @some_int
|
308
|
+
}
|
309
|
+
end
|
310
|
+
end
|
311
|
+
end
|
312
|
+
|
313
|
+
|
270
314
|
spec/app/lib/schema_classes/my_nested_record.rb:
|
271
315
|
# frozen_string_literal: true
|
272
316
|
|