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,207 @@
1
+ spec/app/lib/schema_classes/my_schema_with_union_type.rb:
2
+ # frozen_string_literal: true
3
+
4
+ # This file is autogenerated by AvroGen, Do NOT modify
5
+ module Schemas
6
+ ### Primary Schema Class ###
7
+ # Autogenerated Schema for Record at com.my-namespace.MySchemaWithUnionType
8
+ class MySchemaWithUnionType < AvroGen::SchemaClass::Record
9
+
10
+ ### Secondary Schema Classes ###
11
+ # Autogenerated Schema for Record at com.flipp.content.Record1
12
+ class Record1 < AvroGen::SchemaClass::Record
13
+
14
+ ### Attribute Accessors ###
15
+ # @return [Hash<String, Integer>]
16
+ attr_accessor :record1_map
17
+ # @return [Integer]
18
+ attr_accessor :record1_id
19
+
20
+ # @override
21
+ def initialize(_from_message: false, record1_map: {},
22
+ record1_id: 0)
23
+ @_from_message = _from_message
24
+ super
25
+ self.record1_map = record1_map
26
+ self.record1_id = record1_id
27
+ end
28
+
29
+ # @override
30
+ def schema
31
+ 'Record1'
32
+ end
33
+
34
+ # @override
35
+ def namespace
36
+ 'com.flipp.content'
37
+ end
38
+
39
+ # @override
40
+ def as_json(_opts={})
41
+ {
42
+ 'record1_map' => @record1_map,
43
+ 'record1_id' => @record1_id
44
+ }
45
+ end
46
+ end
47
+
48
+ # Autogenerated Schema for Record at com.flipp.content.Record2
49
+ class Record2 < AvroGen::SchemaClass::Record
50
+
51
+ ### Attribute Accessors ###
52
+ # @return [String]
53
+ attr_accessor :record2_id
54
+
55
+ # @override
56
+ def initialize(_from_message: false, record2_id: "")
57
+ @_from_message = _from_message
58
+ super
59
+ self.record2_id = record2_id
60
+ end
61
+
62
+ # @override
63
+ def schema
64
+ 'Record2'
65
+ end
66
+
67
+ # @override
68
+ def namespace
69
+ 'com.flipp.content'
70
+ end
71
+
72
+ # @override
73
+ def as_json(_opts={})
74
+ {
75
+ 'record2_id' => @record2_id
76
+ }
77
+ end
78
+ end
79
+
80
+ # Autogenerated Schema for Record at com.flipp.content.Record3
81
+ class Record3 < AvroGen::SchemaClass::Record
82
+
83
+ ### Attribute Accessors ###
84
+ # @return [Float]
85
+ attr_accessor :record3_id
86
+
87
+ # @override
88
+ def initialize(_from_message: false, record3_id: 0.0)
89
+ @_from_message = _from_message
90
+ super
91
+ self.record3_id = record3_id
92
+ end
93
+
94
+ # @override
95
+ def schema
96
+ 'Record3'
97
+ end
98
+
99
+ # @override
100
+ def namespace
101
+ 'com.flipp.content'
102
+ end
103
+
104
+ # @override
105
+ def as_json(_opts={})
106
+ {
107
+ 'record3_id' => @record3_id
108
+ }
109
+ end
110
+ end
111
+
112
+ # Autogenerated Schema for Record at com.flipp.content.Record4
113
+ class Record4 < AvroGen::SchemaClass::Record
114
+
115
+ ### Attribute Accessors ###
116
+ # @return [Integer]
117
+ attr_accessor :record4_id
118
+
119
+ # @override
120
+ def initialize(_from_message: false, record4_id: 0)
121
+ @_from_message = _from_message
122
+ super
123
+ self.record4_id = record4_id
124
+ end
125
+
126
+ # @override
127
+ def schema
128
+ 'Record4'
129
+ end
130
+
131
+ # @override
132
+ def namespace
133
+ 'com.flipp.content'
134
+ end
135
+
136
+ # @override
137
+ def as_json(_opts={})
138
+ {
139
+ 'record4_id' => @record4_id
140
+ }
141
+ end
142
+ end
143
+
144
+
145
+ ### Attribute Readers ###
146
+ # @return [nil, Record1, Record2, Record3, Record4, Integer, Array<String>]
147
+ attr_reader :test_union_type
148
+
149
+ ### Attribute Accessors ###
150
+ # @return [String]
151
+ attr_accessor :test_id
152
+ # @return [nil, Integer]
153
+ attr_accessor :test_long
154
+
155
+ ### Attribute Writers ###
156
+ # @return [nil, Record1, Record2, Record3, Record4, Integer, Array<String>]
157
+ def test_union_type=(value)
158
+ @test_union_type = initialize_test_union_type_type(value, from_message: self._from_message)
159
+ end
160
+
161
+ # Helper method to determine which schema type to use for test_union_type
162
+ # @param value [Hash, nil]
163
+ # @param from_message [Boolean] whether this was initialized from a real Avro message
164
+ # @return [Object, nil]
165
+ def initialize_test_union_type_type(value, from_message: false)
166
+ return nil if value.nil?
167
+
168
+ klass = [Record1, Record2, Record3, Record4].find do |candidate|
169
+ fields = candidate.new.as_json.keys
170
+ (value.keys - fields).empty?
171
+ end
172
+
173
+ klass.initialize_from_value(value, from_message: self._from_message)
174
+ end
175
+
176
+ # @override
177
+ def initialize(_from_message: false, test_id: "",
178
+ test_long: nil,
179
+ test_union_type: nil)
180
+ @_from_message = _from_message
181
+ super
182
+ self.test_id = test_id
183
+ self.test_long = test_long
184
+ self.test_union_type = test_union_type
185
+ end
186
+
187
+ # @override
188
+ def schema
189
+ 'MySchemaWithUnionType'
190
+ end
191
+
192
+ # @override
193
+ def namespace
194
+ 'com.my-namespace'
195
+ end
196
+
197
+ # @override
198
+ def as_json(_opts={})
199
+ {
200
+ 'test_id' => @test_id,
201
+ 'test_long' => @test_long,
202
+ 'test_union_type' => @test_union_type&.as_json
203
+ }
204
+ end
205
+ end
206
+ end
207
+