deimos-ruby 2.1.2.pre.beta1 → 2.1.3
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 +6 -1
- data/README.md +1 -1
- data/karafka.rb +71 -1
- data/lib/deimos/schema_backends/avro_schema_coercer.rb +2 -0
- data/lib/deimos/version.rb +1 -1
- data/lib/generators/deimos/schema_class_generator.rb +10 -14
- data/regenerate_test_schema_classes.rb +0 -66
- data/spec/consumer_spec.rb +25 -4
- data/spec/schemas/my_namespace/generated.rb +6 -4
- data/spec/schemas/my_namespace/my_long_namespace_schema.rb +2 -1
- data/spec/schemas/my_namespace/my_nested_schema.rb +6 -4
- data/spec/schemas/my_namespace/my_schema.rb +4 -3
- data/spec/schemas/my_namespace/my_schema_compound_key.rb +2 -1
- data/spec/schemas/my_namespace/my_schema_id_key.rb +2 -1
- data/spec/schemas/my_namespace/my_schema_key.rb +2 -1
- data/spec/schemas/my_namespace/my_schema_with_boolean.rb +2 -1
- data/spec/schemas/my_namespace/my_schema_with_circular_reference.rb +5 -3
- data/spec/schemas/my_namespace/my_schema_with_complex_type.rb +11 -9
- data/spec/schemas/my_namespace/my_schema_with_date_time.rb +2 -1
- data/spec/schemas/my_namespace/my_schema_with_id.rb +2 -1
- data/spec/schemas/my_namespace/my_schema_with_title.rb +47 -0
- data/spec/schemas/my_namespace/my_schema_with_union_type.rb +12 -7
- data/spec/schemas/my_namespace/my_schema_with_unique_id.rb +2 -1
- data/spec/schemas/my_namespace/my_updated_schema.rb +2 -1
- data/spec/schemas/my_namespace/request/create_topic.rb +2 -1
- data/spec/schemas/my_namespace/request/index.rb +2 -1
- data/spec/schemas/my_namespace/request/update_request.rb +2 -1
- data/spec/schemas/my_namespace/response/create_topic.rb +2 -1
- data/spec/schemas/my_namespace/response/index.rb +2 -1
- data/spec/schemas/my_namespace/response/update_response.rb +2 -1
- data/spec/schemas/my_namespace/wibble.rb +2 -1
- data/spec/schemas/my_namespace/widget.rb +2 -1
- data/spec/schemas/my_namespace/widget_the_second.rb +2 -1
- data/spec/snapshots/consumers-no-nest.snap +65 -36
- data/spec/snapshots/consumers.snap +67 -37
- data/spec/snapshots/consumers_and_producers-no-nest.snap +60 -58
- data/spec/snapshots/consumers_and_producers.snap +62 -59
- data/spec/snapshots/consumers_circular-no-nest.snap +65 -36
- data/spec/snapshots/consumers_circular.snap +67 -37
- data/spec/snapshots/consumers_complex_types-no-nest.snap +65 -36
- data/spec/snapshots/consumers_complex_types.snap +67 -37
- data/spec/snapshots/consumers_nested-no-nest.snap +58 -29
- data/spec/snapshots/consumers_nested.snap +60 -30
- data/spec/snapshots/namespace_folders.snap +66 -61
- data/spec/snapshots/namespace_map.snap +66 -61
- data/spec/snapshots/producers_with_key-no-nest.snap +67 -51
- data/spec/snapshots/producers_with_key.snap +69 -52
- metadata +6 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1875e1db2f1a907bc82f3dacb4c1a9fea9be64afb90f317a3f41bbcec5296993
|
4
|
+
data.tar.gz: 03ab989cc0eb681cd60f39a30843298588bc67519e2851a2c3665bad2d62e441
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 709f60ba95583f9e2f9c19055d90a3bd64a6a6184913e46c0152ca95b6592ed287a39f4feceb658ebecbdd9ccc2dcac42aec4a1d009ecbccd215b3687f432356
|
7
|
+
data.tar.gz: a4e884f2b11c789c6c162f3ed3c985842603ab2a529e4091a693d0cc444a45b3aa83d572c259e0b0a89b4ac4d319780132e58d78b2de9ea2d0757b587beb1923
|
data/CHANGELOG.md
CHANGED
@@ -7,7 +7,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
7
7
|
|
8
8
|
## UNRELEASED
|
9
9
|
|
10
|
-
|
10
|
+
# 2.1.3 - 2025-07-22
|
11
|
+
|
12
|
+
- Fix: Schema class generation was missing payload_key for a number of cases.
|
13
|
+
- Fix: Possible crashes when using schema classes with Avro messages.
|
14
|
+
|
15
|
+
## 2.1.2 - 2025-07-21
|
11
16
|
|
12
17
|
- Fix: Backwards-compatible fix wasn't working correctly.
|
13
18
|
|
data/README.md
CHANGED
@@ -1083,7 +1083,7 @@ decoded = Deimos.decode(schema: 'MySchema', namespace: 'com.my-namespace', paylo
|
|
1083
1083
|
|
1084
1084
|
Bug reports and pull requests are welcome on GitHub at https://github.com/flipp-oss/deimos .
|
1085
1085
|
|
1086
|
-
If making changes to the generator, you should regenerate the test schema classes by running
|
1086
|
+
If making changes to the generator, you should regenerate the test schema classes by running `bundle exec ./regenerate_test_schema_classes.rb` .
|
1087
1087
|
|
1088
1088
|
You can/should re-generate RBS types when methods or classes change by running the following:
|
1089
1089
|
|
data/karafka.rb
CHANGED
@@ -1 +1,71 @@
|
|
1
|
-
#
|
1
|
+
# Used in regenerate_test_schema_classes.rb
|
2
|
+
|
3
|
+
class MyConsumer < Deimos::Consumer
|
4
|
+
def consume(payload, metadata); end
|
5
|
+
end
|
6
|
+
|
7
|
+
require_relative "./lib/generators/deimos/schema_class_generator"
|
8
|
+
|
9
|
+
Deimos.configure do |deimos_config|
|
10
|
+
deimos_config.schema.nest_child_schemas = true
|
11
|
+
deimos_config.schema.path = "spec/schemas"
|
12
|
+
deimos_config.schema.backend = :avro_validation
|
13
|
+
deimos_config.schema.generated_class_path = './spec/schemas'
|
14
|
+
deimos_config.schema.use_full_namespace = true
|
15
|
+
deimos_config.schema.schema_namespace_map = {
|
16
|
+
'com' => 'Schemas',
|
17
|
+
'com.my-namespace.my-suborg' => %w(Schemas MyNamespace)
|
18
|
+
}
|
19
|
+
end
|
20
|
+
|
21
|
+
class KarafkaApp < Karafka::App
|
22
|
+
setup do
|
23
|
+
config.kafka = {
|
24
|
+
"bootstrap.servers": '127.0.0.1:9092'
|
25
|
+
}
|
26
|
+
end
|
27
|
+
routes.draw do
|
28
|
+
topic 'MyTopic' do
|
29
|
+
consumer MyConsumer
|
30
|
+
schema 'Generated'
|
31
|
+
namespace 'com.my-namespace'
|
32
|
+
key_config({ field: :a_string })
|
33
|
+
end
|
34
|
+
|
35
|
+
topic 'MyTopic2' do
|
36
|
+
consumer MyConsumer
|
37
|
+
schema 'MySchemaWithComplexTypes'
|
38
|
+
namespace 'com.my-namespace'
|
39
|
+
key_config({ field: :test_id })
|
40
|
+
end
|
41
|
+
|
42
|
+
topic 'MyTopic3' do
|
43
|
+
consumer MyConsumer
|
44
|
+
schema 'MySchemaWithCircularReference'
|
45
|
+
namespace 'com.my-namespace'
|
46
|
+
key_config({ none: true })
|
47
|
+
end
|
48
|
+
|
49
|
+
topic 'MyTopic4' do
|
50
|
+
consumer MyConsumer
|
51
|
+
schema 'MyNestedSchema'
|
52
|
+
namespace 'com.my-namespace'
|
53
|
+
key_config({ field: :test_id })
|
54
|
+
end
|
55
|
+
|
56
|
+
topic 'MyTopic5' do
|
57
|
+
consumer MyConsumer
|
58
|
+
schema 'MyLongNamespaceSchema'
|
59
|
+
namespace 'com.my-namespace.my-suborg'
|
60
|
+
key_config({ field: :test_id })
|
61
|
+
end
|
62
|
+
|
63
|
+
topic 'MyTopic6' do
|
64
|
+
producer_class MyConsumer
|
65
|
+
schema 'MySchema'
|
66
|
+
namespace 'com.my-namespace'
|
67
|
+
key_config({ schema: 'MySchema_key' })
|
68
|
+
end
|
69
|
+
|
70
|
+
end
|
71
|
+
end
|
data/lib/deimos/version.rb
CHANGED
@@ -162,26 +162,22 @@ module Deimos
|
|
162
162
|
def generate
|
163
163
|
_validate
|
164
164
|
Rails.logger.info("Generating schemas from Deimos.config to #{Deimos.config.schema.generated_class_path}")
|
165
|
-
found_schemas =
|
166
|
-
Deimos.
|
165
|
+
found_schemas = {}
|
166
|
+
Deimos.karafka_configs.each do |config|
|
167
167
|
schema_name = config.schema
|
168
|
+
next if schema_name.nil?
|
168
169
|
namespace = config.namespace || Deimos.config.producers.schema_namespace
|
169
170
|
key_schema_name = config.key_config[:schema]
|
170
|
-
found_schemas.add("#{namespace}.#{schema_name}")
|
171
|
-
found_schemas.add("#{namespace}.#{key_schema_name}") if key_schema_name
|
172
|
-
generate_classes(schema_name, namespace, config.key_config)
|
173
|
-
end
|
174
171
|
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
found_schemas
|
180
|
-
found_schemas.add("#{namespace}.#{key_schema_name}") if key_schema_name
|
172
|
+
# don't regenerate if the schema was already found and had a payload key
|
173
|
+
next if found_schemas["#{namespace}.#{schema_name}"].present?
|
174
|
+
|
175
|
+
found_schemas["#{namespace}.#{schema_name}"] = key_schema_name
|
176
|
+
found_schemas["#{namespace}.#{key_schema_name}"] = nil
|
181
177
|
generate_classes(schema_name, namespace, config.key_config)
|
182
178
|
end
|
183
179
|
|
184
|
-
generate_from_schema_files(found_schemas)
|
180
|
+
generate_from_schema_files(found_schemas.keys)
|
185
181
|
|
186
182
|
end
|
187
183
|
|
@@ -245,7 +241,7 @@ module Deimos
|
|
245
241
|
"record.tombstone_key = key\n record.#{key_config[:field]} = key"
|
246
242
|
elsif key_schema
|
247
243
|
field_base_type = _field_type(key_schema)
|
248
|
-
"record.tombstone_key = #{field_base_type}.initialize_from_value(key
|
244
|
+
"record.tombstone_key = #{field_base_type}.initialize_from_value(key)\n record.payload_key = key"
|
249
245
|
else
|
250
246
|
''
|
251
247
|
end
|
@@ -10,70 +10,4 @@ class DeimosApp < Rails::Application
|
|
10
10
|
end
|
11
11
|
DeimosApp.initialize!
|
12
12
|
|
13
|
-
class MyConsumer < Deimos::Consumer
|
14
|
-
def consume(payload, metadata); end
|
15
|
-
end
|
16
|
-
|
17
|
-
require_relative "./lib/generators/deimos/schema_class_generator"
|
18
|
-
|
19
|
-
Deimos.configure do |deimos_config|
|
20
|
-
deimos_config.schema.nest_child_schemas = true
|
21
|
-
deimos_config.schema.path = "spec/schemas"
|
22
|
-
deimos_config.schema.backend = :avro_validation
|
23
|
-
deimos_config.schema.generated_class_path = './spec/schemas'
|
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
|
-
}
|
29
|
-
|
30
|
-
consumer do
|
31
|
-
class_name 'MyConsumer'
|
32
|
-
topic 'MyTopic'
|
33
|
-
schema 'Generated'
|
34
|
-
namespace 'com.my-namespace'
|
35
|
-
key_config field: :a_string
|
36
|
-
end
|
37
|
-
|
38
|
-
consumer do
|
39
|
-
class_name 'MyConsumer'
|
40
|
-
topic 'MyTopic'
|
41
|
-
schema 'MySchemaWithComplexTypes'
|
42
|
-
namespace 'com.my-namespace'
|
43
|
-
key_config field: :test_id
|
44
|
-
end
|
45
|
-
|
46
|
-
consumer do
|
47
|
-
class_name 'MyConsumer'
|
48
|
-
topic 'MyTopic'
|
49
|
-
schema 'MySchemaWithCircularReference'
|
50
|
-
namespace 'com.my-namespace'
|
51
|
-
key_config none: true
|
52
|
-
end
|
53
|
-
|
54
|
-
consumer do
|
55
|
-
class_name 'MyConsumer'
|
56
|
-
topic 'MyTopic'
|
57
|
-
schema 'MyNestedSchema'
|
58
|
-
namespace 'com.my-namespace'
|
59
|
-
key_config field: :test_id
|
60
|
-
end
|
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
|
-
|
70
|
-
producer do
|
71
|
-
class_name 'MyConsumer'
|
72
|
-
topic 'MyTopic'
|
73
|
-
schema 'MySchema'
|
74
|
-
namespace 'com.my-namespace'
|
75
|
-
key_config schema: 'MySchema_key'
|
76
|
-
end
|
77
|
-
end
|
78
|
-
|
79
13
|
Deimos::Generators::SchemaClassGenerator.new.generate
|
data/spec/consumer_spec.rb
CHANGED
@@ -180,7 +180,19 @@ module ConsumerTest
|
|
180
180
|
}
|
181
181
|
end
|
182
182
|
# update the Avro to include a new field
|
183
|
-
generator.
|
183
|
+
generator.insert_into_file(schema_file, additional_field_json, after: '"fields": [', force: true)
|
184
|
+
|
185
|
+
Karafka::App.routes.redraw do
|
186
|
+
topic 'my_consume_topic' do
|
187
|
+
schema 'MyNestedSchema'
|
188
|
+
namespace 'com.my-namespace'
|
189
|
+
key_config field: 'test_id'
|
190
|
+
consumer ConsumerTest::MyConsumer
|
191
|
+
reraise_errors true
|
192
|
+
use_schema_classes true
|
193
|
+
reraise_errors true
|
194
|
+
end
|
195
|
+
end
|
184
196
|
end
|
185
197
|
|
186
198
|
after(:each) do
|
@@ -188,7 +200,7 @@ module ConsumerTest
|
|
188
200
|
end
|
189
201
|
|
190
202
|
let(:generator) { Rails::Generators::Base.new }
|
191
|
-
let(:schema_file) { File.join(__dir__, 'schemas/com/my-namespace/
|
203
|
+
let(:schema_file) { File.join(__dir__, 'schemas/com/my-namespace/MyNestedSchema.avsc') }
|
192
204
|
let(:additional_field_json) do
|
193
205
|
'{"name": "additional_field", "type": "string", "default": ""},'
|
194
206
|
end
|
@@ -196,11 +208,20 @@ module ConsumerTest
|
|
196
208
|
it 'should consume correctly and ignore the additional field' do
|
197
209
|
test_consume_message('my_consume_topic',
|
198
210
|
{ 'test_id' => 'foo',
|
211
|
+
'test_float' => 4.0,
|
212
|
+
'test_array' => ["1", "2"],
|
199
213
|
'additional_field' => 'bar',
|
200
|
-
'
|
214
|
+
'some_nested_record' => {
|
215
|
+
'some_int' => 1,
|
216
|
+
'some_float' => 10.0,
|
217
|
+
'some_string' => 'hi mom',
|
218
|
+
'additional_field' => 'baz'
|
219
|
+
} }) do |payload, _metadata|
|
201
220
|
expect(payload['test_id']).to eq('foo')
|
202
|
-
expect(payload['
|
221
|
+
expect(payload['test_float']).to eq(4.0)
|
222
|
+
expect(payload['some_nested_record']['some_int']).to eq(1)
|
203
223
|
expect(payload.to_h).not_to have_key('additional_field')
|
224
|
+
expect(payload.to_h['some_nested_record']).not_to have_key('additional_field')
|
204
225
|
end
|
205
226
|
|
206
227
|
end
|
@@ -15,7 +15,8 @@ module Schemas; module MyNamespace
|
|
15
15
|
attr_accessor :a_record_field
|
16
16
|
|
17
17
|
# @override
|
18
|
-
def initialize(a_record_field: nil)
|
18
|
+
def initialize(_from_message: false, a_record_field: nil)
|
19
|
+
@_from_message = _from_message
|
19
20
|
super
|
20
21
|
self.a_record_field = a_record_field
|
21
22
|
end
|
@@ -81,16 +82,16 @@ module Schemas; module MyNamespace
|
|
81
82
|
### Attribute Writers ###
|
82
83
|
# @return [AnEnum]
|
83
84
|
def an_enum=(value)
|
84
|
-
@an_enum = AnEnum.initialize_from_value(value, from_message:
|
85
|
+
@an_enum = AnEnum.initialize_from_value(value, from_message: self._from_message)
|
85
86
|
end
|
86
87
|
|
87
88
|
# @return [ARecord]
|
88
89
|
def a_record=(value)
|
89
|
-
@a_record = ARecord.initialize_from_value(value, from_message:
|
90
|
+
@a_record = ARecord.initialize_from_value(value, from_message: self._from_message)
|
90
91
|
end
|
91
92
|
|
92
93
|
# @override
|
93
|
-
def initialize(a_string: nil,
|
94
|
+
def initialize(_from_message: false, a_string: nil,
|
94
95
|
a_int: nil,
|
95
96
|
a_long: nil,
|
96
97
|
a_float: nil,
|
@@ -102,6 +103,7 @@ module Schemas; module MyNamespace
|
|
102
103
|
timestamp: nil,
|
103
104
|
message_id: nil,
|
104
105
|
a_record: nil)
|
106
|
+
@_from_message = _from_message
|
105
107
|
super
|
106
108
|
self.a_string = a_string
|
107
109
|
self.a_int = a_int
|
@@ -13,8 +13,9 @@ module Schemas; module MyNamespace
|
|
13
13
|
attr_accessor :some_int
|
14
14
|
|
15
15
|
# @override
|
16
|
-
def initialize(test_id: nil,
|
16
|
+
def initialize(_from_message: false, test_id: nil,
|
17
17
|
some_int: nil)
|
18
|
+
@_from_message = _from_message
|
18
19
|
super
|
19
20
|
self.test_id = test_id
|
20
21
|
self.some_int = some_int
|
@@ -21,10 +21,11 @@ module Schemas; module MyNamespace
|
|
21
21
|
attr_accessor :some_optional_int
|
22
22
|
|
23
23
|
# @override
|
24
|
-
def initialize(some_int: nil,
|
24
|
+
def initialize(_from_message: false, some_int: nil,
|
25
25
|
some_float: nil,
|
26
26
|
some_string: nil,
|
27
27
|
some_optional_int: nil)
|
28
|
+
@_from_message = _from_message
|
28
29
|
super
|
29
30
|
self.some_int = some_int
|
30
31
|
self.some_float = some_float
|
@@ -71,20 +72,21 @@ module Schemas; module MyNamespace
|
|
71
72
|
### Attribute Writers ###
|
72
73
|
# @return [MyNestedRecord]
|
73
74
|
def some_nested_record=(value)
|
74
|
-
@some_nested_record = MyNestedRecord.initialize_from_value(value, from_message:
|
75
|
+
@some_nested_record = MyNestedRecord.initialize_from_value(value, from_message: self._from_message)
|
75
76
|
end
|
76
77
|
|
77
78
|
# @return [nil, MyNestedRecord]
|
78
79
|
def some_optional_record=(value)
|
79
|
-
@some_optional_record = MyNestedRecord.initialize_from_value(value, from_message:
|
80
|
+
@some_optional_record = MyNestedRecord.initialize_from_value(value, from_message: self._from_message)
|
80
81
|
end
|
81
82
|
|
82
83
|
# @override
|
83
|
-
def initialize(test_id: nil,
|
84
|
+
def initialize(_from_message: false, test_id: nil,
|
84
85
|
test_float: nil,
|
85
86
|
test_array: nil,
|
86
87
|
some_nested_record: nil,
|
87
88
|
some_optional_record: nil)
|
89
|
+
@_from_message = _from_message
|
88
90
|
super
|
89
91
|
self.test_id = test_id
|
90
92
|
self.test_float = test_float
|
@@ -19,13 +19,14 @@ module Schemas; module MyNamespace
|
|
19
19
|
### Attribute Writers ###
|
20
20
|
# @return [MySchemaKey]
|
21
21
|
def payload_key=(value)
|
22
|
-
@payload_key = MySchemaKey.initialize_from_value(value, from_message:
|
22
|
+
@payload_key = MySchemaKey.initialize_from_value(value, from_message: self._from_message)
|
23
23
|
end
|
24
24
|
|
25
25
|
# @override
|
26
|
-
def initialize(test_id: nil,
|
26
|
+
def initialize(_from_message: false, test_id: nil,
|
27
27
|
some_int: nil,
|
28
28
|
payload_key: nil)
|
29
|
+
@_from_message = _from_message
|
29
30
|
super
|
30
31
|
self.test_id = test_id
|
31
32
|
self.some_int = some_int
|
@@ -44,7 +45,7 @@ module Schemas; module MyNamespace
|
|
44
45
|
|
45
46
|
def self.tombstone(key)
|
46
47
|
record = self.allocate
|
47
|
-
record.tombstone_key = MySchemaKey.initialize_from_value(key
|
48
|
+
record.tombstone_key = MySchemaKey.initialize_from_value(key)
|
48
49
|
record.payload_key = key
|
49
50
|
record
|
50
51
|
end
|
@@ -13,8 +13,9 @@ module Schemas; module MyNamespace
|
|
13
13
|
attr_accessor :part_two
|
14
14
|
|
15
15
|
# @override
|
16
|
-
def initialize(part_one: nil,
|
16
|
+
def initialize(_from_message: false, part_one: nil,
|
17
17
|
part_two: nil)
|
18
|
+
@_from_message = _from_message
|
18
19
|
super
|
19
20
|
self.part_one = part_one
|
20
21
|
self.part_two = part_two
|
@@ -13,8 +13,9 @@ module Schemas; module MyNamespace
|
|
13
13
|
attr_accessor :some_bool
|
14
14
|
|
15
15
|
# @override
|
16
|
-
def initialize(test_id: nil,
|
16
|
+
def initialize(_from_message: false, test_id: nil,
|
17
17
|
some_bool: nil)
|
18
|
+
@_from_message = _from_message
|
18
19
|
super
|
19
20
|
self.test_id = test_id
|
20
21
|
self.some_bool = some_bool
|
@@ -15,7 +15,8 @@ module Schemas; module MyNamespace
|
|
15
15
|
attr_accessor :property
|
16
16
|
|
17
17
|
# @override
|
18
|
-
def initialize(property: nil)
|
18
|
+
def initialize(_from_message: false, property: nil)
|
19
|
+
@_from_message = _from_message
|
19
20
|
super
|
20
21
|
self.property = property
|
21
22
|
end
|
@@ -47,12 +48,13 @@ module Schemas; module MyNamespace
|
|
47
48
|
# @return [Hash<String, Property>]
|
48
49
|
def properties=(values)
|
49
50
|
@properties = values&.transform_values do |value|
|
50
|
-
Property.initialize_from_value(value, from_message:
|
51
|
+
Property.initialize_from_value(value, from_message: self._from_message)
|
51
52
|
end
|
52
53
|
end
|
53
54
|
|
54
55
|
# @override
|
55
|
-
def initialize(properties: {})
|
56
|
+
def initialize(_from_message: false, properties: {})
|
57
|
+
@_from_message = _from_message
|
56
58
|
super
|
57
59
|
self.properties = properties
|
58
60
|
end
|
@@ -15,7 +15,8 @@ module Schemas; module MyNamespace
|
|
15
15
|
attr_accessor :a_record_field
|
16
16
|
|
17
17
|
# @override
|
18
|
-
def initialize(a_record_field: nil)
|
18
|
+
def initialize(_from_message: false, a_record_field: nil)
|
19
|
+
@_from_message = _from_message
|
19
20
|
super
|
20
21
|
self.a_record_field = a_record_field
|
21
22
|
end
|
@@ -105,47 +106,47 @@ module Schemas; module MyNamespace
|
|
105
106
|
### Attribute Writers ###
|
106
107
|
# @return [ARecord]
|
107
108
|
def some_record=(value)
|
108
|
-
@some_record = ARecord.initialize_from_value(value, from_message:
|
109
|
+
@some_record = ARecord.initialize_from_value(value, from_message: self._from_message)
|
109
110
|
end
|
110
111
|
|
111
112
|
# @return [nil, ARecord]
|
112
113
|
def some_optional_record=(value)
|
113
|
-
@some_optional_record = ARecord.initialize_from_value(value, from_message:
|
114
|
+
@some_optional_record = ARecord.initialize_from_value(value, from_message: self._from_message)
|
114
115
|
end
|
115
116
|
|
116
117
|
# @return [Array<ARecord>]
|
117
118
|
def some_record_array=(values)
|
118
119
|
@some_record_array = values&.map do |value|
|
119
|
-
ARecord.initialize_from_value(value, from_message:
|
120
|
+
ARecord.initialize_from_value(value, from_message: self._from_message)
|
120
121
|
end
|
121
122
|
end
|
122
123
|
|
123
124
|
# @return [Hash<String, ARecord>]
|
124
125
|
def some_record_map=(values)
|
125
126
|
@some_record_map = values&.transform_values do |value|
|
126
|
-
ARecord.initialize_from_value(value, from_message:
|
127
|
+
ARecord.initialize_from_value(value, from_message: self._from_message)
|
127
128
|
end
|
128
129
|
end
|
129
130
|
|
130
131
|
# @return [Array<AnEnum>]
|
131
132
|
def some_enum_array=(values)
|
132
133
|
@some_enum_array = values&.map do |value|
|
133
|
-
AnEnum.initialize_from_value(value, from_message:
|
134
|
+
AnEnum.initialize_from_value(value, from_message: self._from_message)
|
134
135
|
end
|
135
136
|
end
|
136
137
|
|
137
138
|
# @return [nil, AnotherEnum]
|
138
139
|
def some_optional_enum=(value)
|
139
|
-
@some_optional_enum = AnotherEnum.initialize_from_value(value, from_message:
|
140
|
+
@some_optional_enum = AnotherEnum.initialize_from_value(value, from_message: self._from_message)
|
140
141
|
end
|
141
142
|
|
142
143
|
# @return [YetAnotherEnum]
|
143
144
|
def some_enum_with_default=(value)
|
144
|
-
@some_enum_with_default = YetAnotherEnum.initialize_from_value(value, from_message:
|
145
|
+
@some_enum_with_default = YetAnotherEnum.initialize_from_value(value, from_message: self._from_message)
|
145
146
|
end
|
146
147
|
|
147
148
|
# @override
|
148
|
-
def initialize(test_id: nil,
|
149
|
+
def initialize(_from_message: false, test_id: nil,
|
149
150
|
test_float: nil,
|
150
151
|
test_string_array: ["test"],
|
151
152
|
test_int_array: [123],
|
@@ -158,6 +159,7 @@ module Schemas; module MyNamespace
|
|
158
159
|
some_enum_array: nil,
|
159
160
|
some_optional_enum: nil,
|
160
161
|
some_enum_with_default: "sym6")
|
162
|
+
@_from_message = _from_message
|
161
163
|
super
|
162
164
|
self.test_id = test_id
|
163
165
|
self.test_float = test_float
|
@@ -19,11 +19,12 @@ module Schemas; module MyNamespace
|
|
19
19
|
attr_accessor :timestamp
|
20
20
|
|
21
21
|
# @override
|
22
|
-
def initialize(test_id: nil,
|
22
|
+
def initialize(_from_message: false, test_id: nil,
|
23
23
|
updated_at: nil,
|
24
24
|
some_int: nil,
|
25
25
|
some_datetime_int: nil,
|
26
26
|
timestamp: nil)
|
27
|
+
@_from_message = _from_message
|
27
28
|
super
|
28
29
|
self.test_id = test_id
|
29
30
|
self.updated_at = updated_at
|
@@ -17,10 +17,11 @@ module Schemas; module MyNamespace
|
|
17
17
|
attr_accessor :timestamp
|
18
18
|
|
19
19
|
# @override
|
20
|
-
def initialize(test_id: nil,
|
20
|
+
def initialize(_from_message: false, test_id: nil,
|
21
21
|
some_int: nil,
|
22
22
|
message_id: nil,
|
23
23
|
timestamp: nil)
|
24
|
+
@_from_message = _from_message
|
24
25
|
super
|
25
26
|
self.test_id = test_id
|
26
27
|
self.some_int = some_int
|
@@ -0,0 +1,47 @@
|
|
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.MySchemaWithTitle
|
7
|
+
class MySchemaWithTitle < Deimos::SchemaClass::Record
|
8
|
+
|
9
|
+
### Attribute Accessors ###
|
10
|
+
# @return [String]
|
11
|
+
attr_accessor :test_id
|
12
|
+
# @return [Integer]
|
13
|
+
attr_accessor :some_int
|
14
|
+
# @return [String]
|
15
|
+
attr_accessor :title
|
16
|
+
|
17
|
+
# @override
|
18
|
+
def initialize(_from_message: false, test_id: nil,
|
19
|
+
some_int: nil,
|
20
|
+
title: nil)
|
21
|
+
@_from_message = _from_message
|
22
|
+
super
|
23
|
+
self.test_id = test_id
|
24
|
+
self.some_int = some_int
|
25
|
+
self.title = title
|
26
|
+
end
|
27
|
+
|
28
|
+
# @override
|
29
|
+
def schema
|
30
|
+
'MySchemaWithTitle'
|
31
|
+
end
|
32
|
+
|
33
|
+
# @override
|
34
|
+
def namespace
|
35
|
+
'com.my-namespace'
|
36
|
+
end
|
37
|
+
|
38
|
+
# @override
|
39
|
+
def as_json(_opts={})
|
40
|
+
{
|
41
|
+
'test_id' => @test_id,
|
42
|
+
'some_int' => @some_int,
|
43
|
+
'title' => @title
|
44
|
+
}
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end; end
|