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.
Files changed (49) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +6 -1
  3. data/README.md +1 -1
  4. data/karafka.rb +71 -1
  5. data/lib/deimos/schema_backends/avro_schema_coercer.rb +2 -0
  6. data/lib/deimos/version.rb +1 -1
  7. data/lib/generators/deimos/schema_class_generator.rb +10 -14
  8. data/regenerate_test_schema_classes.rb +0 -66
  9. data/spec/consumer_spec.rb +25 -4
  10. data/spec/schemas/my_namespace/generated.rb +6 -4
  11. data/spec/schemas/my_namespace/my_long_namespace_schema.rb +2 -1
  12. data/spec/schemas/my_namespace/my_nested_schema.rb +6 -4
  13. data/spec/schemas/my_namespace/my_schema.rb +4 -3
  14. data/spec/schemas/my_namespace/my_schema_compound_key.rb +2 -1
  15. data/spec/schemas/my_namespace/my_schema_id_key.rb +2 -1
  16. data/spec/schemas/my_namespace/my_schema_key.rb +2 -1
  17. data/spec/schemas/my_namespace/my_schema_with_boolean.rb +2 -1
  18. data/spec/schemas/my_namespace/my_schema_with_circular_reference.rb +5 -3
  19. data/spec/schemas/my_namespace/my_schema_with_complex_type.rb +11 -9
  20. data/spec/schemas/my_namespace/my_schema_with_date_time.rb +2 -1
  21. data/spec/schemas/my_namespace/my_schema_with_id.rb +2 -1
  22. data/spec/schemas/my_namespace/my_schema_with_title.rb +47 -0
  23. data/spec/schemas/my_namespace/my_schema_with_union_type.rb +12 -7
  24. data/spec/schemas/my_namespace/my_schema_with_unique_id.rb +2 -1
  25. data/spec/schemas/my_namespace/my_updated_schema.rb +2 -1
  26. data/spec/schemas/my_namespace/request/create_topic.rb +2 -1
  27. data/spec/schemas/my_namespace/request/index.rb +2 -1
  28. data/spec/schemas/my_namespace/request/update_request.rb +2 -1
  29. data/spec/schemas/my_namespace/response/create_topic.rb +2 -1
  30. data/spec/schemas/my_namespace/response/index.rb +2 -1
  31. data/spec/schemas/my_namespace/response/update_response.rb +2 -1
  32. data/spec/schemas/my_namespace/wibble.rb +2 -1
  33. data/spec/schemas/my_namespace/widget.rb +2 -1
  34. data/spec/schemas/my_namespace/widget_the_second.rb +2 -1
  35. data/spec/snapshots/consumers-no-nest.snap +65 -36
  36. data/spec/snapshots/consumers.snap +67 -37
  37. data/spec/snapshots/consumers_and_producers-no-nest.snap +60 -58
  38. data/spec/snapshots/consumers_and_producers.snap +62 -59
  39. data/spec/snapshots/consumers_circular-no-nest.snap +65 -36
  40. data/spec/snapshots/consumers_circular.snap +67 -37
  41. data/spec/snapshots/consumers_complex_types-no-nest.snap +65 -36
  42. data/spec/snapshots/consumers_complex_types.snap +67 -37
  43. data/spec/snapshots/consumers_nested-no-nest.snap +58 -29
  44. data/spec/snapshots/consumers_nested.snap +60 -30
  45. data/spec/snapshots/namespace_folders.snap +66 -61
  46. data/spec/snapshots/namespace_map.snap +66 -61
  47. data/spec/snapshots/producers_with_key-no-nest.snap +67 -51
  48. data/spec/snapshots/producers_with_key.snap +69 -52
  49. metadata +6 -4
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c46b9a4b66276607dae95bc1e22f31d964be1f03241911a9d8d6645b70698429
4
- data.tar.gz: 2457d19845c4577ceaf9cb33b2d317846bd1510b5308d53e9f061482d7c1e4cb
3
+ metadata.gz: 1875e1db2f1a907bc82f3dacb4c1a9fea9be64afb90f317a3f41bbcec5296993
4
+ data.tar.gz: 03ab989cc0eb681cd60f39a30843298588bc67519e2851a2c3665bad2d62e441
5
5
  SHA512:
6
- metadata.gz: 4156e4d6911f4010d0cea070ba0345fae92df0c6859737a90e2cf5ef5dca2f170da7ccb093fb45ea4269b23644ec3a7b084becc17b5cb86e696befbcaeef6ca8
7
- data.tar.gz: 9e1aff4fad7860e7f57dfd63a2031cfaac78ba5af818014e1861c248a3e32ddd7f88546f5daf563c1df5b9c2b78b61334a58e3831a9092eca1aeaba7933f9258
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
- ## 2.1.1 - 2025-07-21
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 `./regenerate_test_schema_classes.rb` .
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
- # blank load file, used in regenerate_test_schema_classes.rb
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
@@ -65,6 +65,8 @@ module Deimos
65
65
  # @param val [Object]
66
66
  # @return [Object]
67
67
  def coerce_record(type, val)
68
+ return nil if val.nil?
69
+
68
70
  record = val.map do |name, value|
69
71
  field = type.fields.find { |f| f.name == name }
70
72
  coerce_type(field.type, value)
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Deimos
4
- VERSION = '2.1.2-beta1'
4
+ VERSION = '2.1.3'
5
5
  end
@@ -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 = Set.new
166
- Deimos.config.producer_objects.each do |config|
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
- Deimos.config.consumer_objects.each do |config|
176
- schema_name = config.schema
177
- namespace = config.namespace
178
- key_schema_name = config.key_config[:schema]
179
- found_schemas.add("#{namespace}.#{schema_name}")
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, from_message: self._from_message)\n record.payload_key = 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
@@ -180,7 +180,19 @@ module ConsumerTest
180
180
  }
181
181
  end
182
182
  # update the Avro to include a new field
183
- generator.append_to_file(schema_file, additional_field_json, after: '"fields": [')
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/MySchema.avsc') }
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
- 'some_int' => 1 }) do |payload, _metadata|
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['some_int']).to eq(1)
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: @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: @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: @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: @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: @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, from_message: @from_message)
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
@@ -11,7 +11,8 @@ module Schemas; module MyNamespace
11
11
  attr_accessor :id
12
12
 
13
13
  # @override
14
- def initialize(id: nil)
14
+ def initialize(_from_message: false, id: nil)
15
+ @_from_message = _from_message
15
16
  super
16
17
  self.id = id
17
18
  end
@@ -11,7 +11,8 @@ module Schemas; module MyNamespace
11
11
  attr_accessor :test_id
12
12
 
13
13
  # @override
14
- def initialize(test_id: nil)
14
+ def initialize(_from_message: false, test_id: nil)
15
+ @_from_message = _from_message
15
16
  super
16
17
  self.test_id = test_id
17
18
  end
@@ -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: @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: @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: @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: @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: @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: @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: @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: @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