deimos-ruby 1.13.2 → 1.14.1

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 (41) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +15 -0
  3. data/README.md +6 -0
  4. data/deimos-ruby.gemspec +1 -0
  5. data/lib/deimos/active_record_consume/message_consumption.rb +2 -1
  6. data/lib/deimos/config/configuration.rb +4 -0
  7. data/lib/deimos/schema_backends/avro_base.rb +1 -1
  8. data/lib/deimos/schema_class/base.rb +17 -0
  9. data/lib/deimos/test_helpers.rb +1 -1
  10. data/lib/deimos/version.rb +1 -1
  11. data/lib/generators/deimos/active_record/templates/migration.rb.tt +5 -3
  12. data/lib/generators/deimos/active_record_generator.rb +1 -1
  13. data/lib/generators/deimos/schema_class/templates/schema_class.rb.tt +0 -7
  14. data/lib/generators/deimos/schema_class/templates/schema_record.rb.tt +10 -1
  15. data/lib/generators/deimos/schema_class_generator.rb +19 -7
  16. data/spec/active_record_consumer_spec.rb +21 -0
  17. data/spec/generators/active_record_generator_spec.rb +4 -2
  18. data/spec/generators/schema_class/my_schema_with_complex_types_spec.rb +37 -24
  19. data/spec/generators/schema_class_generator_spec.rb +93 -55
  20. data/spec/producer_spec.rb +1 -1
  21. data/spec/schemas/com/my-namespace/MySchemaId_key.avsc +12 -0
  22. data/spec/schemas/generated.rb +159 -0
  23. data/spec/schemas/my_nested_schema.rb +117 -0
  24. data/spec/{schema_classes → schemas}/my_schema.rb +1 -0
  25. data/spec/{schema_classes → schemas}/my_schema_key.rb +1 -0
  26. data/spec/schemas/my_schema_with_circular_reference.rb +77 -0
  27. data/spec/schemas/my_schema_with_complex_type.rb +239 -0
  28. data/spec/{schema_classes/generated.rb → snapshots/consumers-no-nest.snap} +20 -1
  29. data/spec/snapshots/consumers.snap +161 -0
  30. data/spec/snapshots/consumers_and_producers-no-nest.snap +397 -0
  31. data/spec/snapshots/consumers_and_producers.snap +377 -0
  32. data/spec/{schema_classes/my_schema_with_circular_reference.rb → snapshots/consumers_circular-no-nest.snap} +37 -26
  33. data/spec/snapshots/consumers_circular.snap +79 -0
  34. data/spec/{schema_classes/my_schema_with_complex_types.rb → snapshots/consumers_complex_types-no-nest.snap} +57 -22
  35. data/spec/snapshots/consumers_complex_types.snap +241 -0
  36. data/spec/{schema_classes/my_nested_schema.rb → snapshots/consumers_nested-no-nest.snap} +12 -1
  37. data/spec/snapshots/consumers_nested.snap +119 -0
  38. data/spec/snapshots/producers_with_key-no-nest.snap +95 -0
  39. data/spec/snapshots/producers_with_key.snap +95 -0
  40. data/spec/spec_helper.rb +4 -1
  41. metadata +54 -14
@@ -0,0 +1,397 @@
1
+ spec/app/lib/schema_classes/a_record.rb:
2
+ # frozen_string_literal: true
3
+
4
+ # This file is autogenerated by Deimos, Do NOT modify
5
+ module Schemas
6
+ ### Primary Schema Class ###
7
+ # Autogenerated Schema for Record at com.my-namespace.ARecord
8
+ class ARecord < Deimos::SchemaClass::Record
9
+
10
+ ### Attribute Accessors ###
11
+ # @param value [String]
12
+ attr_accessor :a_record_field
13
+
14
+ # @override
15
+ def initialize(a_record_field: nil)
16
+ super
17
+ self.a_record_field = a_record_field
18
+ end
19
+
20
+ # @override
21
+ def schema
22
+ 'ARecord'
23
+ end
24
+
25
+ # @override
26
+ def namespace
27
+ 'com.my-namespace'
28
+ end
29
+
30
+ # @override
31
+ def to_h
32
+ {
33
+ 'a_record_field' => @a_record_field
34
+ }
35
+ end
36
+ end
37
+ end
38
+
39
+
40
+ spec/app/lib/schema_classes/an_enum.rb:
41
+ # frozen_string_literal: true
42
+
43
+ # This file is autogenerated by Deimos, Do NOT modify
44
+ module Schemas
45
+ ### Primary Schema Class ###
46
+ # Autogenerated Schema for Enum at com.my-namespace.AnEnum
47
+ class AnEnum < Deimos::SchemaClass::Enum
48
+ # @return ['sym1', 'sym2']
49
+ attr_accessor :an_enum
50
+
51
+ # :nodoc:
52
+ def initialize(an_enum)
53
+ super
54
+ self.an_enum = an_enum
55
+ end
56
+
57
+ # @override
58
+ def symbols
59
+ %w(sym1 sym2)
60
+ end
61
+
62
+ # @override
63
+ def to_h
64
+ @an_enum
65
+ end
66
+ end
67
+ end
68
+
69
+
70
+ spec/app/lib/schema_classes/generated.rb:
71
+ # frozen_string_literal: true
72
+
73
+ # This file is autogenerated by Deimos, Do NOT modify
74
+ module Schemas
75
+ ### Primary Schema Class ###
76
+ # Autogenerated Schema for Record at com.my-namespace.Generated
77
+ class Generated < Deimos::SchemaClass::Record
78
+
79
+ ### Attribute Readers ###
80
+ # @return [AnEnum]
81
+ attr_reader :an_enum
82
+ # @return [ARecord]
83
+ attr_reader :a_record
84
+
85
+ ### Attribute Accessors ###
86
+ # @param value [String]
87
+ attr_accessor :a_string
88
+ # @param value [Integer]
89
+ attr_accessor :a_int
90
+ # @param value [Integer]
91
+ attr_accessor :a_long
92
+ # @param value [Float]
93
+ attr_accessor :a_float
94
+ # @param value [Float]
95
+ attr_accessor :a_double
96
+ # @param value [nil, Integer]
97
+ attr_accessor :an_optional_int
98
+ # @param values [Array<Integer>]
99
+ attr_accessor :an_array
100
+ # @param values [Hash<String, String>]
101
+ attr_accessor :a_map
102
+ # @param value [String]
103
+ attr_accessor :timestamp
104
+ # @param value [String]
105
+ attr_accessor :message_id
106
+
107
+ ### Attribute Writers ###
108
+ # @param value [AnEnum]
109
+ def an_enum=(value)
110
+ @an_enum = AnEnum.initialize_from_value(value)
111
+ end
112
+
113
+ # @param value [ARecord]
114
+ def a_record=(value)
115
+ @a_record = ARecord.initialize_from_value(value)
116
+ end
117
+
118
+ # @override
119
+ def initialize(a_string: nil,
120
+ a_int: nil,
121
+ a_long: nil,
122
+ a_float: nil,
123
+ a_double: nil,
124
+ an_optional_int: nil,
125
+ an_enum: nil,
126
+ an_array: nil,
127
+ a_map: nil,
128
+ timestamp: nil,
129
+ message_id: nil,
130
+ a_record: nil)
131
+ super
132
+ self.a_string = a_string
133
+ self.a_int = a_int
134
+ self.a_long = a_long
135
+ self.a_float = a_float
136
+ self.a_double = a_double
137
+ self.an_optional_int = an_optional_int
138
+ self.an_enum = an_enum
139
+ self.an_array = an_array
140
+ self.a_map = a_map
141
+ self.timestamp = timestamp
142
+ self.message_id = message_id
143
+ self.a_record = a_record
144
+ end
145
+
146
+ # @override
147
+ def schema
148
+ 'Generated'
149
+ end
150
+
151
+ # @override
152
+ def namespace
153
+ 'com.my-namespace'
154
+ end
155
+
156
+ # @override
157
+ def to_h
158
+ {
159
+ 'a_string' => @a_string,
160
+ 'a_int' => @a_int,
161
+ 'a_long' => @a_long,
162
+ 'a_float' => @a_float,
163
+ 'a_double' => @a_double,
164
+ 'an_optional_int' => @an_optional_int,
165
+ 'an_enum' => @an_enum&.to_h,
166
+ 'an_array' => @an_array,
167
+ 'a_map' => @a_map,
168
+ 'timestamp' => @timestamp,
169
+ 'message_id' => @message_id,
170
+ 'a_record' => @a_record&.to_h
171
+ }
172
+ end
173
+ end
174
+ end
175
+
176
+
177
+ spec/app/lib/schema_classes/my_nested_record.rb:
178
+ # frozen_string_literal: true
179
+
180
+ # This file is autogenerated by Deimos, Do NOT modify
181
+ module Schemas
182
+ ### Primary Schema Class ###
183
+ # Autogenerated Schema for Record at com.my-namespace.MyNestedRecord
184
+ class MyNestedRecord < Deimos::SchemaClass::Record
185
+
186
+ ### Attribute Accessors ###
187
+ # @param value [Integer]
188
+ attr_accessor :some_int
189
+ # @param value [Float]
190
+ attr_accessor :some_float
191
+ # @param value [String]
192
+ attr_accessor :some_string
193
+ # @param value [nil, Integer]
194
+ attr_accessor :some_optional_int
195
+
196
+ # @override
197
+ def initialize(some_int: nil,
198
+ some_float: nil,
199
+ some_string: nil,
200
+ some_optional_int: nil)
201
+ super
202
+ self.some_int = some_int
203
+ self.some_float = some_float
204
+ self.some_string = some_string
205
+ self.some_optional_int = some_optional_int
206
+ end
207
+
208
+ # @override
209
+ def schema
210
+ 'MyNestedRecord'
211
+ end
212
+
213
+ # @override
214
+ def namespace
215
+ 'com.my-namespace'
216
+ end
217
+
218
+ # @override
219
+ def to_h
220
+ {
221
+ 'some_int' => @some_int,
222
+ 'some_float' => @some_float,
223
+ 'some_string' => @some_string,
224
+ 'some_optional_int' => @some_optional_int
225
+ }
226
+ end
227
+ end
228
+ end
229
+
230
+
231
+ spec/app/lib/schema_classes/my_nested_schema.rb:
232
+ # frozen_string_literal: true
233
+
234
+ # This file is autogenerated by Deimos, Do NOT modify
235
+ module Schemas
236
+ ### Primary Schema Class ###
237
+ # Autogenerated Schema for Record at com.my-namespace.MyNestedSchema
238
+ class MyNestedSchema < Deimos::SchemaClass::Record
239
+
240
+ ### Attribute Readers ###
241
+ # @return [MyNestedRecord]
242
+ attr_reader :some_nested_record
243
+ # @return [nil, MyNestedRecord]
244
+ attr_reader :some_optional_record
245
+
246
+ ### Attribute Accessors ###
247
+ # @param value [String]
248
+ attr_accessor :test_id
249
+ # @param value [Float]
250
+ attr_accessor :test_float
251
+ # @param values [Array<String>]
252
+ attr_accessor :test_array
253
+
254
+ ### Attribute Writers ###
255
+ # @param value [MyNestedRecord]
256
+ def some_nested_record=(value)
257
+ @some_nested_record = MyNestedRecord.initialize_from_value(value)
258
+ end
259
+
260
+ # @param value [nil, MyNestedRecord]
261
+ def some_optional_record=(value)
262
+ @some_optional_record = MyNestedRecord.initialize_from_value(value)
263
+ end
264
+
265
+ # @override
266
+ def initialize(test_id: nil,
267
+ test_float: nil,
268
+ test_array: nil,
269
+ some_nested_record: nil,
270
+ some_optional_record: nil)
271
+ super
272
+ self.test_id = test_id
273
+ self.test_float = test_float
274
+ self.test_array = test_array
275
+ self.some_nested_record = some_nested_record
276
+ self.some_optional_record = some_optional_record
277
+ end
278
+
279
+ # @override
280
+ def schema
281
+ 'MyNestedSchema'
282
+ end
283
+
284
+ # @override
285
+ def namespace
286
+ 'com.my-namespace'
287
+ end
288
+
289
+ # @override
290
+ def to_h
291
+ {
292
+ 'test_id' => @test_id,
293
+ 'test_float' => @test_float,
294
+ 'test_array' => @test_array,
295
+ 'some_nested_record' => @some_nested_record&.to_h,
296
+ 'some_optional_record' => @some_optional_record&.to_h
297
+ }
298
+ end
299
+ end
300
+ end
301
+
302
+
303
+ spec/app/lib/schema_classes/my_schema.rb:
304
+ # frozen_string_literal: true
305
+
306
+ # This file is autogenerated by Deimos, Do NOT modify
307
+ module Schemas
308
+ ### Primary Schema Class ###
309
+ # Autogenerated Schema for Record at com.my-namespace.MySchema
310
+ class MySchema < Deimos::SchemaClass::Record
311
+
312
+ ### Attribute Readers ###
313
+ # @return [MySchemaKey]
314
+ attr_reader :payload_key
315
+
316
+ ### Attribute Accessors ###
317
+ # @param value [String]
318
+ attr_accessor :test_id
319
+ # @param value [Integer]
320
+ attr_accessor :some_int
321
+
322
+ ### Attribute Writers ###
323
+ # @param value [MySchemaKey]
324
+ def payload_key=(value)
325
+ @payload_key = MySchemaKey.initialize_from_value(value)
326
+ end
327
+
328
+ # @override
329
+ def initialize(test_id: nil,
330
+ some_int: nil,
331
+ payload_key: nil)
332
+ super
333
+ self.test_id = test_id
334
+ self.some_int = some_int
335
+ self.payload_key = payload_key
336
+ end
337
+
338
+ # @override
339
+ def schema
340
+ 'MySchema'
341
+ end
342
+
343
+ # @override
344
+ def namespace
345
+ 'com.my-namespace'
346
+ end
347
+
348
+ # @override
349
+ def to_h
350
+ {
351
+ 'test_id' => @test_id,
352
+ 'some_int' => @some_int,
353
+ 'payload_key' => @payload_key&.to_h
354
+ }
355
+ end
356
+ end
357
+ end
358
+
359
+
360
+ spec/app/lib/schema_classes/my_schema_key.rb:
361
+ # frozen_string_literal: true
362
+
363
+ # This file is autogenerated by Deimos, Do NOT modify
364
+ module Schemas
365
+ ### Primary Schema Class ###
366
+ # Autogenerated Schema for Record at com.my-namespace.MySchema_key
367
+ class MySchemaKey < Deimos::SchemaClass::Record
368
+
369
+ ### Attribute Accessors ###
370
+ # @param value [String]
371
+ attr_accessor :test_id
372
+
373
+ # @override
374
+ def initialize(test_id: nil)
375
+ super
376
+ self.test_id = test_id
377
+ end
378
+
379
+ # @override
380
+ def schema
381
+ 'MySchema_key'
382
+ end
383
+
384
+ # @override
385
+ def namespace
386
+ 'com.my-namespace'
387
+ end
388
+
389
+ # @override
390
+ def to_h
391
+ {
392
+ 'test_id' => @test_id
393
+ }
394
+ end
395
+ end
396
+ end
397
+