avro-gen-ruby 0.1.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.
Files changed (97) hide show
  1. checksums.yaml +7 -0
  2. data/.github/workflows/ci.yml +34 -0
  3. data/.github/workflows/release.yml +31 -0
  4. data/.gitignore +6 -0
  5. data/.rspec +1 -0
  6. data/.rubocop.yml +100 -0
  7. data/Gemfile +5 -0
  8. data/LICENSE +21 -0
  9. data/README.md +61 -0
  10. data/Rakefile +11 -0
  11. data/avro-gen-ruby.gemspec +32 -0
  12. data/lib/avro_gen/avro_parser.rb +64 -0
  13. data/lib/avro_gen/configuration.rb +60 -0
  14. data/lib/avro_gen/errors.rb +6 -0
  15. data/lib/avro_gen/generator/templates/schema_class.rb.tt +8 -0
  16. data/lib/avro_gen/generator/templates/schema_enum.rb.tt +13 -0
  17. data/lib/avro_gen/generator/templates/schema_record.rb.tt +102 -0
  18. data/lib/avro_gen/generator.rb +375 -0
  19. data/lib/avro_gen/railtie.rb +12 -0
  20. data/lib/avro_gen/schema_class/base.rb +62 -0
  21. data/lib/avro_gen/schema_class/enum.rb +48 -0
  22. data/lib/avro_gen/schema_class/record.rb +108 -0
  23. data/lib/avro_gen/schema_class.rb +62 -0
  24. data/lib/avro_gen/schema_field.rb +26 -0
  25. data/lib/avro_gen/schema_validator.rb +80 -0
  26. data/lib/avro_gen/upgrader.rb +43 -0
  27. data/lib/avro_gen/version.rb +5 -0
  28. data/lib/avro_gen.rb +18 -0
  29. data/lib/tasks/avro.rake +18 -0
  30. data/regenerate_test_schema_classes.rb +32 -0
  31. data/spec/generator_spec.rb +92 -0
  32. data/spec/my_schema_spec.rb +18 -0
  33. data/spec/my_schema_with_circular_reference_spec.rb +97 -0
  34. data/spec/my_schema_with_complex_types_spec.rb +235 -0
  35. data/spec/schema_validator_spec.rb +42 -0
  36. data/spec/schemas/com/my-namespace/Generated.avsc +77 -0
  37. data/spec/schemas/com/my-namespace/MyNestedSchema.avsc +62 -0
  38. data/spec/schemas/com/my-namespace/MySchema.avsc +18 -0
  39. data/spec/schemas/com/my-namespace/MySchemaCompound_key.avsc +18 -0
  40. data/spec/schemas/com/my-namespace/MySchemaId_key.avsc +12 -0
  41. data/spec/schemas/com/my-namespace/MySchemaWithBooleans.avsc +18 -0
  42. data/spec/schemas/com/my-namespace/MySchemaWithCircularReference.avsc +39 -0
  43. data/spec/schemas/com/my-namespace/MySchemaWithComplexTypes.avsc +120 -0
  44. data/spec/schemas/com/my-namespace/MySchemaWithDateTimes.avsc +33 -0
  45. data/spec/schemas/com/my-namespace/MySchemaWithId.avsc +28 -0
  46. data/spec/schemas/com/my-namespace/MySchemaWithTitle.avsc +22 -0
  47. data/spec/schemas/com/my-namespace/MySchemaWithUnionType.avsc +91 -0
  48. data/spec/schemas/com/my-namespace/MySchemaWithUniqueId.avsc +32 -0
  49. data/spec/schemas/com/my-namespace/MySchema_key.avsc +13 -0
  50. data/spec/schemas/com/my-namespace/Wibble.avsc +43 -0
  51. data/spec/schemas/com/my-namespace/Widget.avsc +27 -0
  52. data/spec/schemas/com/my-namespace/WidgetTheSecond.avsc +27 -0
  53. data/spec/schemas/com/my-namespace/WidgetTheThird.avsc +27 -0
  54. data/spec/schemas/com/my-namespace/my-suborg/MyLongNamespaceSchema.avsc +18 -0
  55. data/spec/schemas/com/my-namespace/request/CreateTopic.avsc +11 -0
  56. data/spec/schemas/com/my-namespace/request/Index.avsc +11 -0
  57. data/spec/schemas/com/my-namespace/request/UpdateRequest.avsc +11 -0
  58. data/spec/schemas/com/my-namespace/response/CreateTopic.avsc +11 -0
  59. data/spec/schemas/com/my-namespace/response/Index.avsc +11 -0
  60. data/spec/schemas/com/my-namespace/response/UpdateResponse.avsc +11 -0
  61. data/spec/schemas/my_namespace/generated.rb +164 -0
  62. data/spec/schemas/my_namespace/my_long_namespace_schema.rb +49 -0
  63. data/spec/schemas/my_namespace/my_nested_schema.rb +126 -0
  64. data/spec/schemas/my_namespace/my_schema.rb +62 -0
  65. data/spec/schemas/my_namespace/my_schema_compound_key.rb +42 -0
  66. data/spec/schemas/my_namespace/my_schema_id_key.rb +37 -0
  67. data/spec/schemas/my_namespace/my_schema_key.rb +37 -0
  68. data/spec/schemas/my_namespace/my_schema_with_boolean.rb +42 -0
  69. data/spec/schemas/my_namespace/my_schema_with_circular_reference.rb +84 -0
  70. data/spec/schemas/my_namespace/my_schema_with_complex_type.rb +241 -0
  71. data/spec/schemas/my_namespace/my_schema_with_date_time.rb +57 -0
  72. data/spec/schemas/my_namespace/my_schema_with_id.rb +52 -0
  73. data/spec/schemas/my_namespace/my_schema_with_title.rb +47 -0
  74. data/spec/schemas/my_namespace/my_schema_with_union_type.rb +205 -0
  75. data/spec/schemas/my_namespace/my_schema_with_unique_id.rb +57 -0
  76. data/spec/schemas/my_namespace/request/create_topic.rb +37 -0
  77. data/spec/schemas/my_namespace/request/index.rb +37 -0
  78. data/spec/schemas/my_namespace/request/update_request.rb +37 -0
  79. data/spec/schemas/my_namespace/response/create_topic.rb +37 -0
  80. data/spec/schemas/my_namespace/response/index.rb +37 -0
  81. data/spec/schemas/my_namespace/response/update_response.rb +37 -0
  82. data/spec/schemas/my_namespace/wibble.rb +77 -0
  83. data/spec/schemas/my_namespace/widget.rb +57 -0
  84. data/spec/schemas/my_namespace/widget_the_second.rb +57 -0
  85. data/spec/schemas/my_namespace/widget_the_third.rb +57 -0
  86. data/spec/snapshots/consumers-no-nest.snap +1740 -0
  87. data/spec/snapshots/consumers.snap +1720 -0
  88. data/spec/snapshots/my_nested_schema.snap +121 -0
  89. data/spec/snapshots/my_schema_with_boolean.snap +44 -0
  90. data/spec/snapshots/my_schema_with_circular_reference.snap +81 -0
  91. data/spec/snapshots/my_schema_with_complex_type.snap +236 -0
  92. data/spec/snapshots/my_schema_with_date_time.snap +59 -0
  93. data/spec/snapshots/my_schema_with_union_type.snap +207 -0
  94. data/spec/snapshots/namespace_folders.snap +1800 -0
  95. data/spec/snapshots/namespace_map.snap +1800 -0
  96. data/spec/spec_helper.rb +23 -0
  97. metadata +265 -0
@@ -0,0 +1,27 @@
1
+ {
2
+ "namespace": "com.my-namespace",
3
+ "name": "Widget",
4
+ "type": "record",
5
+ "fields": [
6
+ {
7
+ "name": "id",
8
+ "type": "long"
9
+ },
10
+ {
11
+ "name": "widget_id",
12
+ "type": "long"
13
+ },
14
+ {
15
+ "name": "name",
16
+ "type": "string"
17
+ },
18
+ {
19
+ "name": "updated_at",
20
+ "type": "long"
21
+ },
22
+ {
23
+ "name": "created_at",
24
+ "type": "long"
25
+ }
26
+ ]
27
+ }
@@ -0,0 +1,27 @@
1
+ {
2
+ "namespace": "com.my-namespace",
3
+ "name": "WidgetTheSecond",
4
+ "type": "record",
5
+ "fields": [
6
+ {
7
+ "name": "id",
8
+ "type": "long"
9
+ },
10
+ {
11
+ "name": "widget_id",
12
+ "type": "long"
13
+ },
14
+ {
15
+ "name": "model_id",
16
+ "type": "string"
17
+ },
18
+ {
19
+ "name": "updated_at",
20
+ "type": "long"
21
+ },
22
+ {
23
+ "name": "created_at",
24
+ "type": "long"
25
+ }
26
+ ]
27
+ }
@@ -0,0 +1,27 @@
1
+ {
2
+ "namespace": "com.my-namespace",
3
+ "name": "WidgetTheThird",
4
+ "type": "record",
5
+ "fields": [
6
+ {
7
+ "name": "id",
8
+ "type": "string"
9
+ },
10
+ {
11
+ "name": "widget_id",
12
+ "type": "long"
13
+ },
14
+ {
15
+ "name": "model_id",
16
+ "type": "string"
17
+ },
18
+ {
19
+ "name": "updated_at",
20
+ "type": "long"
21
+ },
22
+ {
23
+ "name": "created_at",
24
+ "type": "long"
25
+ }
26
+ ]
27
+ }
@@ -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,11 @@
1
+ {
2
+ "namespace": "com.my-namespace.request",
3
+ "name": "CreateTopic",
4
+ "type": "record",
5
+ "fields": [
6
+ {
7
+ "name": "request_id",
8
+ "type": "string"
9
+ }
10
+ ]
11
+ }
@@ -0,0 +1,11 @@
1
+ {
2
+ "namespace": "com.my-namespace.request",
3
+ "name": "Index",
4
+ "type": "record",
5
+ "fields": [
6
+ {
7
+ "name": "request_id",
8
+ "type": "string"
9
+ }
10
+ ]
11
+ }
@@ -0,0 +1,11 @@
1
+ {
2
+ "namespace": "com.my-namespace.request",
3
+ "name": "UpdateRequest",
4
+ "type": "record",
5
+ "fields": [
6
+ {
7
+ "name": "update_request_id",
8
+ "type": "string"
9
+ }
10
+ ]
11
+ }
@@ -0,0 +1,11 @@
1
+ {
2
+ "namespace": "com.my-namespace.response",
3
+ "name": "CreateTopic",
4
+ "type": "record",
5
+ "fields": [
6
+ {
7
+ "name": "response_id",
8
+ "type": "string"
9
+ }
10
+ ]
11
+ }
@@ -0,0 +1,11 @@
1
+ {
2
+ "namespace": "com.my-namespace.response",
3
+ "name": "Index",
4
+ "type": "record",
5
+ "fields": [
6
+ {
7
+ "name": "response_id",
8
+ "type": "string"
9
+ }
10
+ ]
11
+ }
@@ -0,0 +1,11 @@
1
+ {
2
+ "namespace": "com.my-namespace.response",
3
+ "name": "UpdateResponse",
4
+ "type": "record",
5
+ "fields": [
6
+ {
7
+ "name": "update_response_id",
8
+ "type": "string"
9
+ }
10
+ ]
11
+ }
@@ -0,0 +1,164 @@
1
+ # frozen_string_literal: true
2
+
3
+ # This file is autogenerated by AvroGen, Do NOT modify
4
+ module Schemas; module MyNamespace
5
+ ### Primary Schema Class ###
6
+ # Autogenerated Schema for Record at com.my-namespace.Generated
7
+ class Generated < AvroGen::SchemaClass::Record
8
+
9
+ ### Secondary Schema Classes ###
10
+ # Autogenerated Schema for Record at com.my-namespace.ARecord
11
+ class ARecord < AvroGen::SchemaClass::Record
12
+
13
+ ### Attribute Accessors ###
14
+ # @return [String]
15
+ attr_accessor :a_record_field
16
+
17
+ # @override
18
+ def initialize(_from_message: false, a_record_field: nil)
19
+ @_from_message = _from_message
20
+ super
21
+ self.a_record_field = a_record_field
22
+ end
23
+
24
+ # @override
25
+ def schema
26
+ 'ARecord'
27
+ end
28
+
29
+ # @override
30
+ def namespace
31
+ 'com.my-namespace'
32
+ end
33
+
34
+ # @override
35
+ def as_json(_opts={})
36
+ {
37
+ 'a_record_field' => @a_record_field
38
+ }
39
+ end
40
+ end
41
+
42
+ # Autogenerated Schema for Enum at com.my-namespace.AnEnum
43
+ class AnEnum < AvroGen::SchemaClass::Enum
44
+ # @override
45
+ def symbols
46
+ %w(sym1 sym2)
47
+ end
48
+
49
+
50
+ def sym1?
51
+ @value == 'sym1'
52
+ end
53
+
54
+ def sym2?
55
+ @value == 'sym2'
56
+ end
57
+
58
+ end
59
+
60
+
61
+ ### Attribute Readers ###
62
+ # @return [AnEnum]
63
+ attr_reader :an_enum
64
+ # @return [ARecord]
65
+ attr_reader :a_record
66
+
67
+ ### Attribute Accessors ###
68
+ # @return [String]
69
+ attr_accessor :a_string
70
+ # @return [Integer]
71
+ attr_accessor :a_int
72
+ # @return [Integer]
73
+ attr_accessor :a_long
74
+ # @return [Float]
75
+ attr_accessor :a_float
76
+ # @return [Float]
77
+ attr_accessor :a_double
78
+ # @return [nil, Integer]
79
+ attr_accessor :an_optional_int
80
+ # @return [Array<Integer>]
81
+ attr_accessor :an_array
82
+ # @return [Hash<String, String>]
83
+ attr_accessor :a_map
84
+ # @return [String]
85
+ attr_accessor :timestamp
86
+ # @return [String]
87
+ attr_accessor :message_id
88
+
89
+ ### Attribute Writers ###
90
+ # @return [AnEnum]
91
+ def an_enum=(value)
92
+ @an_enum = AnEnum.initialize_from_value(value, from_message: self._from_message)
93
+ end
94
+
95
+ # @return [ARecord]
96
+ def a_record=(value)
97
+ @a_record = ARecord.initialize_from_value(value, from_message: self._from_message)
98
+ end
99
+
100
+ # @override
101
+ def initialize(_from_message: false, a_string: nil,
102
+ a_int: nil,
103
+ a_long: nil,
104
+ a_float: nil,
105
+ a_double: nil,
106
+ an_optional_int: nil,
107
+ an_enum: nil,
108
+ an_array: nil,
109
+ a_map: nil,
110
+ timestamp: nil,
111
+ message_id: nil,
112
+ a_record: nil)
113
+ @_from_message = _from_message
114
+ super
115
+ self.a_string = a_string
116
+ self.a_int = a_int
117
+ self.a_long = a_long
118
+ self.a_float = a_float
119
+ self.a_double = a_double
120
+ self.an_optional_int = an_optional_int
121
+ self.an_enum = an_enum
122
+ self.an_array = an_array
123
+ self.a_map = a_map
124
+ self.timestamp = timestamp
125
+ self.message_id = message_id
126
+ self.a_record = a_record
127
+ end
128
+
129
+ # @override
130
+ def schema
131
+ 'Generated'
132
+ end
133
+
134
+ # @override
135
+ def namespace
136
+ 'com.my-namespace'
137
+ end
138
+
139
+ def self.tombstone(key)
140
+ record = self.allocate
141
+ record.tombstone_key = key
142
+ record.a_string = key
143
+ record
144
+ end
145
+
146
+ # @override
147
+ def as_json(_opts={})
148
+ {
149
+ 'a_string' => @a_string,
150
+ 'a_int' => @a_int,
151
+ 'a_long' => @a_long,
152
+ 'a_float' => @a_float,
153
+ 'a_double' => @a_double,
154
+ 'an_optional_int' => @an_optional_int,
155
+ 'an_enum' => @an_enum&.as_json,
156
+ 'an_array' => @an_array,
157
+ 'a_map' => @a_map,
158
+ 'timestamp' => @timestamp,
159
+ 'message_id' => @message_id,
160
+ 'a_record' => @a_record&.as_json
161
+ }
162
+ end
163
+ end
164
+ end; end
@@ -0,0 +1,49 @@
1
+ # frozen_string_literal: true
2
+
3
+ # This file is autogenerated by AvroGen, 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 < AvroGen::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(_from_message: false, test_id: nil,
17
+ some_int: nil)
18
+ @_from_message = _from_message
19
+ super
20
+ self.test_id = test_id
21
+ self.some_int = some_int
22
+ end
23
+
24
+ # @override
25
+ def schema
26
+ 'MyLongNamespaceSchema'
27
+ end
28
+
29
+ # @override
30
+ def namespace
31
+ 'com.my-namespace.my-suborg'
32
+ end
33
+
34
+ def self.tombstone(key)
35
+ record = self.allocate
36
+ record.tombstone_key = key
37
+ record.test_id = key
38
+ record
39
+ end
40
+
41
+ # @override
42
+ def as_json(_opts={})
43
+ {
44
+ 'test_id' => @test_id,
45
+ 'some_int' => @some_int
46
+ }
47
+ end
48
+ end
49
+ end; end
@@ -0,0 +1,126 @@
1
+ # frozen_string_literal: true
2
+
3
+ # This file is autogenerated by AvroGen, Do NOT modify
4
+ module Schemas; module MyNamespace
5
+ ### Primary Schema Class ###
6
+ # Autogenerated Schema for Record at com.my-namespace.MyNestedSchema
7
+ class MyNestedSchema < AvroGen::SchemaClass::Record
8
+
9
+ ### Secondary Schema Classes ###
10
+ # Autogenerated Schema for Record at com.my-namespace.MyNestedRecord
11
+ class MyNestedRecord < AvroGen::SchemaClass::Record
12
+
13
+ ### Attribute Accessors ###
14
+ # @return [Integer]
15
+ attr_accessor :some_int
16
+ # @return [Float]
17
+ attr_accessor :some_float
18
+ # @return [String]
19
+ attr_accessor :some_string
20
+ # @return [nil, Integer]
21
+ attr_accessor :some_optional_int
22
+
23
+ # @override
24
+ def initialize(_from_message: false, some_int: nil,
25
+ some_float: nil,
26
+ some_string: nil,
27
+ some_optional_int: nil)
28
+ @_from_message = _from_message
29
+ super
30
+ self.some_int = some_int
31
+ self.some_float = some_float
32
+ self.some_string = some_string
33
+ self.some_optional_int = some_optional_int
34
+ end
35
+
36
+ # @override
37
+ def schema
38
+ 'MyNestedRecord'
39
+ end
40
+
41
+ # @override
42
+ def namespace
43
+ 'com.my-namespace'
44
+ end
45
+
46
+ # @override
47
+ def as_json(_opts={})
48
+ {
49
+ 'some_int' => @some_int,
50
+ 'some_float' => @some_float,
51
+ 'some_string' => @some_string,
52
+ 'some_optional_int' => @some_optional_int
53
+ }
54
+ end
55
+ end
56
+
57
+
58
+ ### Attribute Readers ###
59
+ # @return [MyNestedRecord]
60
+ attr_reader :some_nested_record
61
+ # @return [nil, MyNestedRecord]
62
+ attr_reader :some_optional_record
63
+
64
+ ### Attribute Accessors ###
65
+ # @return [String]
66
+ attr_accessor :test_id
67
+ # @return [Float]
68
+ attr_accessor :test_float
69
+ # @return [Array<String>]
70
+ attr_accessor :test_array
71
+
72
+ ### Attribute Writers ###
73
+ # @return [MyNestedRecord]
74
+ def some_nested_record=(value)
75
+ @some_nested_record = MyNestedRecord.initialize_from_value(value, from_message: self._from_message)
76
+ end
77
+
78
+ # @return [nil, MyNestedRecord]
79
+ def some_optional_record=(value)
80
+ @some_optional_record = MyNestedRecord.initialize_from_value(value, from_message: self._from_message)
81
+ end
82
+
83
+ # @override
84
+ def initialize(_from_message: false, test_id: nil,
85
+ test_float: nil,
86
+ test_array: nil,
87
+ some_nested_record: nil,
88
+ some_optional_record: nil)
89
+ @_from_message = _from_message
90
+ super
91
+ self.test_id = test_id
92
+ self.test_float = test_float
93
+ self.test_array = test_array
94
+ self.some_nested_record = some_nested_record
95
+ self.some_optional_record = some_optional_record
96
+ end
97
+
98
+ # @override
99
+ def schema
100
+ 'MyNestedSchema'
101
+ end
102
+
103
+ # @override
104
+ def namespace
105
+ 'com.my-namespace'
106
+ end
107
+
108
+ def self.tombstone(key)
109
+ record = self.allocate
110
+ record.tombstone_key = key
111
+ record.test_id = key
112
+ record
113
+ end
114
+
115
+ # @override
116
+ def as_json(_opts={})
117
+ {
118
+ 'test_id' => @test_id,
119
+ 'test_float' => @test_float,
120
+ 'test_array' => @test_array,
121
+ 'some_nested_record' => @some_nested_record&.as_json,
122
+ 'some_optional_record' => @some_optional_record&.as_json
123
+ }
124
+ end
125
+ end
126
+ end; end
@@ -0,0 +1,62 @@
1
+ # frozen_string_literal: true
2
+
3
+ # This file is autogenerated by AvroGen, Do NOT modify
4
+ module Schemas; module MyNamespace
5
+ ### Primary Schema Class ###
6
+ # Autogenerated Schema for Record at com.my-namespace.MySchema
7
+ class MySchema < AvroGen::SchemaClass::Record
8
+
9
+ ### Attribute Readers ###
10
+ # @return [MySchemaKey]
11
+ attr_reader :payload_key
12
+
13
+ ### Attribute Accessors ###
14
+ # @return [String]
15
+ attr_accessor :test_id
16
+ # @return [Integer]
17
+ attr_accessor :some_int
18
+
19
+ ### Attribute Writers ###
20
+ # @return [MySchemaKey]
21
+ def payload_key=(value)
22
+ @payload_key = MySchemaKey.initialize_from_value(value, from_message: self._from_message)
23
+ end
24
+
25
+ # @override
26
+ def initialize(_from_message: false, test_id: nil,
27
+ some_int: nil,
28
+ payload_key: nil)
29
+ @_from_message = _from_message
30
+ super
31
+ self.test_id = test_id
32
+ self.some_int = some_int
33
+ self.payload_key = payload_key
34
+ end
35
+
36
+ # @override
37
+ def schema
38
+ 'MySchema'
39
+ end
40
+
41
+ # @override
42
+ def namespace
43
+ 'com.my-namespace'
44
+ end
45
+
46
+ def self.tombstone(key)
47
+ record = self.allocate
48
+ record.tombstone_key = MySchemaKey.initialize_from_value(key)
49
+ record.payload_key = key
50
+ record
51
+ end
52
+
53
+ # @override
54
+ def as_json(_opts={})
55
+ {
56
+ 'test_id' => @test_id,
57
+ 'some_int' => @some_int,
58
+ 'payload_key' => @payload_key&.as_json
59
+ }
60
+ end
61
+ end
62
+ end; end
@@ -0,0 +1,42 @@
1
+ # frozen_string_literal: true
2
+
3
+ # This file is autogenerated by AvroGen, Do NOT modify
4
+ module Schemas; module MyNamespace
5
+ ### Primary Schema Class ###
6
+ # Autogenerated Schema for Record at com.my-namespace.MySchemaCompound_key
7
+ class MySchemaCompoundKey < AvroGen::SchemaClass::Record
8
+
9
+ ### Attribute Accessors ###
10
+ # @return [String]
11
+ attr_accessor :part_one
12
+ # @return [String]
13
+ attr_accessor :part_two
14
+
15
+ # @override
16
+ def initialize(_from_message: false, part_one: nil,
17
+ part_two: nil)
18
+ @_from_message = _from_message
19
+ super
20
+ self.part_one = part_one
21
+ self.part_two = part_two
22
+ end
23
+
24
+ # @override
25
+ def schema
26
+ 'MySchemaCompound_key'
27
+ end
28
+
29
+ # @override
30
+ def namespace
31
+ 'com.my-namespace'
32
+ end
33
+
34
+ # @override
35
+ def as_json(_opts={})
36
+ {
37
+ 'part_one' => @part_one,
38
+ 'part_two' => @part_two
39
+ }
40
+ end
41
+ end
42
+ end; end
@@ -0,0 +1,37 @@
1
+ # frozen_string_literal: true
2
+
3
+ # This file is autogenerated by AvroGen, Do NOT modify
4
+ module Schemas; module MyNamespace
5
+ ### Primary Schema Class ###
6
+ # Autogenerated Schema for Record at com.my-namespace.MySchemaId_key
7
+ class MySchemaIdKey < AvroGen::SchemaClass::Record
8
+
9
+ ### Attribute Accessors ###
10
+ # @return [Integer]
11
+ attr_accessor :id
12
+
13
+ # @override
14
+ def initialize(_from_message: false, id: nil)
15
+ @_from_message = _from_message
16
+ super
17
+ self.id = id
18
+ end
19
+
20
+ # @override
21
+ def schema
22
+ 'MySchemaId_key'
23
+ end
24
+
25
+ # @override
26
+ def namespace
27
+ 'com.my-namespace'
28
+ end
29
+
30
+ # @override
31
+ def as_json(_opts={})
32
+ {
33
+ 'id' => @id
34
+ }
35
+ end
36
+ end
37
+ end; end
@@ -0,0 +1,37 @@
1
+ # frozen_string_literal: true
2
+
3
+ # This file is autogenerated by AvroGen, Do NOT modify
4
+ module Schemas; module MyNamespace
5
+ ### Primary Schema Class ###
6
+ # Autogenerated Schema for Record at com.my-namespace.MySchema_key
7
+ class MySchemaKey < AvroGen::SchemaClass::Record
8
+
9
+ ### Attribute Accessors ###
10
+ # @return [String]
11
+ attr_accessor :test_id
12
+
13
+ # @override
14
+ def initialize(_from_message: false, test_id: nil)
15
+ @_from_message = _from_message
16
+ super
17
+ self.test_id = test_id
18
+ end
19
+
20
+ # @override
21
+ def schema
22
+ 'MySchema_key'
23
+ end
24
+
25
+ # @override
26
+ def namespace
27
+ 'com.my-namespace'
28
+ end
29
+
30
+ # @override
31
+ def as_json(_opts={})
32
+ {
33
+ 'test_id' => @test_id
34
+ }
35
+ end
36
+ end
37
+ end; end