deimos-ruby 1.10.2 → 1.12.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +19 -0
- data/Gemfile.lock +8 -8
- data/README.md +150 -16
- data/deimos-ruby.gemspec +1 -1
- data/docs/CONFIGURATION.md +4 -0
- data/lib/deimos/active_record_consume/batch_consumption.rb +1 -1
- data/lib/deimos/active_record_consume/message_consumption.rb +4 -3
- data/lib/deimos/active_record_consumer.rb +2 -2
- data/lib/deimos/active_record_producer.rb +3 -0
- data/lib/deimos/config/configuration.rb +29 -0
- data/lib/deimos/consume/batch_consumption.rb +2 -2
- data/lib/deimos/consume/message_consumption.rb +2 -2
- data/lib/deimos/consumer.rb +10 -0
- data/lib/deimos/producer.rb +4 -3
- data/lib/deimos/schema_backends/avro_base.rb +64 -1
- data/lib/deimos/schema_backends/avro_schema_registry.rb +1 -1
- data/lib/deimos/schema_backends/base.rb +18 -2
- data/lib/deimos/schema_class/base.rb +67 -0
- data/lib/deimos/schema_class/enum.rb +24 -0
- data/lib/deimos/schema_class/record.rb +59 -0
- data/lib/deimos/shared_config.rb +5 -0
- data/lib/deimos/test_helpers.rb +70 -17
- data/lib/deimos/utils/schema_class.rb +29 -0
- data/lib/deimos/version.rb +1 -1
- data/lib/deimos.rb +3 -0
- data/lib/generators/deimos/schema_class/templates/schema_class.rb.tt +15 -0
- data/lib/generators/deimos/schema_class/templates/schema_enum.rb.tt +21 -0
- data/lib/generators/deimos/schema_class/templates/schema_record.rb.tt +65 -0
- data/lib/generators/deimos/schema_class_generator.rb +247 -0
- data/lib/tasks/deimos.rake +8 -0
- data/spec/active_record_batch_consumer_spec.rb +120 -110
- data/spec/active_record_consumer_spec.rb +97 -88
- data/spec/active_record_producer_spec.rb +38 -27
- data/spec/batch_consumer_spec.rb +37 -28
- data/spec/config/configuration_spec.rb +10 -3
- data/spec/consumer_spec.rb +94 -83
- data/spec/generators/active_record_generator_spec.rb +1 -0
- data/spec/generators/schema_class/my_schema_with_complex_types_spec.rb +206 -0
- data/spec/generators/schema_class_generator_spec.rb +186 -0
- data/spec/producer_spec.rb +110 -0
- data/spec/schema_classes/generated.rb +156 -0
- data/spec/schema_classes/my_nested_schema.rb +114 -0
- data/spec/schema_classes/my_schema.rb +53 -0
- data/spec/schema_classes/my_schema_key.rb +35 -0
- data/spec/schema_classes/my_schema_with_complex_types.rb +172 -0
- data/spec/schemas/com/my-namespace/Generated.avsc +6 -0
- data/spec/schemas/com/my-namespace/MySchemaWithComplexTypes.avsc +95 -0
- data/spec/spec_helper.rb +6 -1
- metadata +28 -4
@@ -0,0 +1,114 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# This file is autogenerated by Deimos, Do NOT modify
|
4
|
+
module Schemas
|
5
|
+
### Secondary Schema Classes ###
|
6
|
+
# Autogenerated Schema for Record at com.my-namespace.MyNestedRecord
|
7
|
+
class MyNestedRecord < Deimos::SchemaClass::Record
|
8
|
+
### Attribute Accessors ###
|
9
|
+
# @param value [Integer]
|
10
|
+
attr_accessor :some_int
|
11
|
+
# @param value [Float]
|
12
|
+
attr_accessor :some_float
|
13
|
+
# @param value [String]
|
14
|
+
attr_accessor :some_string
|
15
|
+
# @param value [nil, Integer]
|
16
|
+
attr_accessor :some_optional_int
|
17
|
+
|
18
|
+
# @override
|
19
|
+
def initialize(some_int: nil,
|
20
|
+
some_float: nil,
|
21
|
+
some_string: nil,
|
22
|
+
some_optional_int: nil)
|
23
|
+
super
|
24
|
+
self.some_int = some_int
|
25
|
+
self.some_float = some_float
|
26
|
+
self.some_string = some_string
|
27
|
+
self.some_optional_int = some_optional_int
|
28
|
+
end
|
29
|
+
|
30
|
+
# @override
|
31
|
+
def schema
|
32
|
+
'MyNestedRecord'
|
33
|
+
end
|
34
|
+
|
35
|
+
# @override
|
36
|
+
def namespace
|
37
|
+
'com.my-namespace'
|
38
|
+
end
|
39
|
+
|
40
|
+
# @override
|
41
|
+
def to_h
|
42
|
+
{
|
43
|
+
'some_int' => @some_int,
|
44
|
+
'some_float' => @some_float,
|
45
|
+
'some_string' => @some_string,
|
46
|
+
'some_optional_int' => @some_optional_int
|
47
|
+
}
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
### Primary Schema Class ###
|
52
|
+
# Autogenerated Schema for Record at com.my-namespace.MyNestedSchema
|
53
|
+
class MyNestedSchema < Deimos::SchemaClass::Record
|
54
|
+
### Attribute Readers ###
|
55
|
+
# @return [MyNestedRecord]
|
56
|
+
attr_reader :some_nested_record
|
57
|
+
# @return [nil, MyNestedRecord]
|
58
|
+
attr_reader :some_optional_record
|
59
|
+
|
60
|
+
### Attribute Accessors ###
|
61
|
+
# @param value [String]
|
62
|
+
attr_accessor :test_id
|
63
|
+
# @param value [Float]
|
64
|
+
attr_accessor :test_float
|
65
|
+
# @param values [Array<String>]
|
66
|
+
attr_accessor :test_array
|
67
|
+
|
68
|
+
### Attribute Writers ###
|
69
|
+
# @param value [MyNestedRecord]
|
70
|
+
def some_nested_record=(value)
|
71
|
+
@some_nested_record = MyNestedRecord.initialize_from_value(value)
|
72
|
+
end
|
73
|
+
|
74
|
+
# @param value [nil, MyNestedRecord]
|
75
|
+
def some_optional_record=(value)
|
76
|
+
@some_optional_record = MyNestedRecord.initialize_from_value(value)
|
77
|
+
end
|
78
|
+
|
79
|
+
# @override
|
80
|
+
def initialize(test_id: nil,
|
81
|
+
test_float: nil,
|
82
|
+
test_array: nil,
|
83
|
+
some_nested_record: nil,
|
84
|
+
some_optional_record: nil)
|
85
|
+
super
|
86
|
+
self.test_id = test_id
|
87
|
+
self.test_float = test_float
|
88
|
+
self.test_array = test_array
|
89
|
+
self.some_nested_record = some_nested_record
|
90
|
+
self.some_optional_record = some_optional_record
|
91
|
+
end
|
92
|
+
|
93
|
+
# @override
|
94
|
+
def schema
|
95
|
+
'MyNestedSchema'
|
96
|
+
end
|
97
|
+
|
98
|
+
# @override
|
99
|
+
def namespace
|
100
|
+
'com.my-namespace'
|
101
|
+
end
|
102
|
+
|
103
|
+
# @override
|
104
|
+
def to_h
|
105
|
+
{
|
106
|
+
'test_id' => @test_id,
|
107
|
+
'test_float' => @test_float,
|
108
|
+
'test_array' => @test_array,
|
109
|
+
'some_nested_record' => @some_nested_record&.to_h,
|
110
|
+
'some_optional_record' => @some_optional_record&.to_h
|
111
|
+
}
|
112
|
+
end
|
113
|
+
end
|
114
|
+
end
|
@@ -0,0 +1,53 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# This file is autogenerated by Deimos, Do NOT modify
|
4
|
+
module Schemas
|
5
|
+
### Primary Schema Class ###
|
6
|
+
# Autogenerated Schema for Record at com.my-namespace.MySchema
|
7
|
+
class MySchema < Deimos::SchemaClass::Record
|
8
|
+
### Attribute Readers ###
|
9
|
+
# @return [MySchemaKey]
|
10
|
+
attr_reader :payload_key
|
11
|
+
|
12
|
+
### Attribute Accessors ###
|
13
|
+
# @param value [String]
|
14
|
+
attr_accessor :test_id
|
15
|
+
# @param value [Integer]
|
16
|
+
attr_accessor :some_int
|
17
|
+
|
18
|
+
### Attribute Writers ###
|
19
|
+
# @param value [MySchemaKey]
|
20
|
+
def payload_key=(value)
|
21
|
+
@payload_key = MySchemaKey.initialize_from_value(value)
|
22
|
+
end
|
23
|
+
|
24
|
+
# @override
|
25
|
+
def initialize(test_id: nil,
|
26
|
+
some_int: nil,
|
27
|
+
payload_key: nil)
|
28
|
+
super
|
29
|
+
self.test_id = test_id
|
30
|
+
self.some_int = some_int
|
31
|
+
self.payload_key = payload_key
|
32
|
+
end
|
33
|
+
|
34
|
+
# @override
|
35
|
+
def schema
|
36
|
+
'MySchema'
|
37
|
+
end
|
38
|
+
|
39
|
+
# @override
|
40
|
+
def namespace
|
41
|
+
'com.my-namespace'
|
42
|
+
end
|
43
|
+
|
44
|
+
# @override
|
45
|
+
def to_h
|
46
|
+
{
|
47
|
+
'test_id' => @test_id,
|
48
|
+
'some_int' => @some_int,
|
49
|
+
'payload_key' => @payload_key&.to_h
|
50
|
+
}
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# This file is autogenerated by Deimos, Do NOT modify
|
4
|
+
module Schemas
|
5
|
+
### Primary Schema Class ###
|
6
|
+
# Autogenerated Schema for Record at com.my-namespace.MySchema-key
|
7
|
+
class MySchemaKey < Deimos::SchemaClass::Record
|
8
|
+
### Attribute Accessors ###
|
9
|
+
# @param value [String]
|
10
|
+
attr_accessor :test_id
|
11
|
+
|
12
|
+
# @override
|
13
|
+
def initialize(test_id: nil)
|
14
|
+
super
|
15
|
+
self.test_id = test_id
|
16
|
+
end
|
17
|
+
|
18
|
+
# @override
|
19
|
+
def schema
|
20
|
+
'MySchema-key'
|
21
|
+
end
|
22
|
+
|
23
|
+
# @override
|
24
|
+
def namespace
|
25
|
+
'com.my-namespace'
|
26
|
+
end
|
27
|
+
|
28
|
+
# @override
|
29
|
+
def to_h
|
30
|
+
{
|
31
|
+
'test_id' => @test_id
|
32
|
+
}
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,172 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# This file is autogenerated by Deimos, Do NOT modify
|
4
|
+
module Schemas
|
5
|
+
### Secondary Schema Classes ###
|
6
|
+
# Autogenerated Schema for Record at com.my-namespace.ARecord
|
7
|
+
class ARecord < Deimos::SchemaClass::Record
|
8
|
+
### Attribute Accessors ###
|
9
|
+
# @param value [String]
|
10
|
+
attr_accessor :a_record_field
|
11
|
+
|
12
|
+
# @override
|
13
|
+
def initialize(a_record_field: nil)
|
14
|
+
super
|
15
|
+
self.a_record_field = a_record_field
|
16
|
+
end
|
17
|
+
|
18
|
+
# @override
|
19
|
+
def schema
|
20
|
+
'ARecord'
|
21
|
+
end
|
22
|
+
|
23
|
+
# @override
|
24
|
+
def namespace
|
25
|
+
'com.my-namespace'
|
26
|
+
end
|
27
|
+
|
28
|
+
# @override
|
29
|
+
def to_h
|
30
|
+
{
|
31
|
+
'a_record_field' => @a_record_field
|
32
|
+
}
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
# Autogenerated Schema for Enum at com.my-namespace.AnEnum
|
37
|
+
class AnEnum < Deimos::SchemaClass::Enum
|
38
|
+
# @return ['sym1', 'sym2']
|
39
|
+
attr_accessor :an_enum
|
40
|
+
|
41
|
+
# :nodoc:
|
42
|
+
def initialize(an_enum)
|
43
|
+
super
|
44
|
+
self.an_enum = an_enum
|
45
|
+
end
|
46
|
+
|
47
|
+
# @override
|
48
|
+
def symbols
|
49
|
+
%w(sym1 sym2)
|
50
|
+
end
|
51
|
+
|
52
|
+
# @override
|
53
|
+
def to_h
|
54
|
+
@an_enum
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
### Primary Schema Class ###
|
59
|
+
# Autogenerated Schema for Record at com.my-namespace.MySchemaWithComplexTypes
|
60
|
+
class MySchemaWithComplexTypes < Deimos::SchemaClass::Record
|
61
|
+
### Attribute Readers ###
|
62
|
+
# @return [ARecord]
|
63
|
+
attr_reader :some_record
|
64
|
+
# @return [nil, ARecord]
|
65
|
+
attr_reader :some_optional_record
|
66
|
+
# @return [Array<ARecord>]
|
67
|
+
attr_reader :some_record_array
|
68
|
+
# @return [Hash<String, ARecord>]
|
69
|
+
attr_reader :some_record_map
|
70
|
+
# @return [Array<AnEnum>]
|
71
|
+
attr_reader :some_enum_array
|
72
|
+
|
73
|
+
### Attribute Accessors ###
|
74
|
+
# @param value [String]
|
75
|
+
attr_accessor :test_id
|
76
|
+
# @param value [Float]
|
77
|
+
attr_accessor :test_float
|
78
|
+
# @param values [Array<String>]
|
79
|
+
attr_accessor :test_string_array
|
80
|
+
# @param values [Array<Integer>]
|
81
|
+
attr_accessor :test_int_array
|
82
|
+
# @param value [Integer, nil]
|
83
|
+
attr_accessor :test_optional_int
|
84
|
+
# @param values [Hash<String, Integer>]
|
85
|
+
attr_accessor :some_integer_map
|
86
|
+
|
87
|
+
### Attribute Writers ###
|
88
|
+
# @param value [ARecord]
|
89
|
+
def some_record=(value)
|
90
|
+
@some_record = ARecord.initialize_from_value(value)
|
91
|
+
end
|
92
|
+
|
93
|
+
# @param value [nil, ARecord]
|
94
|
+
def some_optional_record=(value)
|
95
|
+
@some_optional_record = ARecord.initialize_from_value(value)
|
96
|
+
end
|
97
|
+
|
98
|
+
# @param values [Array<ARecord>]
|
99
|
+
def some_record_array=(values)
|
100
|
+
@some_record_array = values.map do |value|
|
101
|
+
ARecord.initialize_from_value(value)
|
102
|
+
end
|
103
|
+
end
|
104
|
+
|
105
|
+
# @param values [Hash<String, ARecord>]
|
106
|
+
def some_record_map=(values)
|
107
|
+
@some_record_map = values.transform_values do |value|
|
108
|
+
ARecord.initialize_from_value(value)
|
109
|
+
end
|
110
|
+
end
|
111
|
+
|
112
|
+
# @param values [Array<AnEnum>]
|
113
|
+
def some_enum_array=(values)
|
114
|
+
@some_enum_array = values.map do |value|
|
115
|
+
AnEnum.initialize_from_value(value)
|
116
|
+
end
|
117
|
+
end
|
118
|
+
|
119
|
+
# @override
|
120
|
+
def initialize(test_id: nil,
|
121
|
+
test_float: nil,
|
122
|
+
test_string_array: ["test"],
|
123
|
+
test_int_array: [123],
|
124
|
+
test_optional_int: 123,
|
125
|
+
some_integer_map: {"abc"=>123},
|
126
|
+
some_record: {"a_record_field"=>"Test String"},
|
127
|
+
some_optional_record: nil,
|
128
|
+
some_record_array: nil,
|
129
|
+
some_record_map: nil,
|
130
|
+
some_enum_array: nil)
|
131
|
+
super
|
132
|
+
self.test_id = test_id
|
133
|
+
self.test_float = test_float
|
134
|
+
self.test_string_array = test_string_array
|
135
|
+
self.test_int_array = test_int_array
|
136
|
+
self.test_optional_int = test_optional_int
|
137
|
+
self.some_integer_map = some_integer_map
|
138
|
+
self.some_record = some_record
|
139
|
+
self.some_optional_record = some_optional_record
|
140
|
+
self.some_record_array = some_record_array
|
141
|
+
self.some_record_map = some_record_map
|
142
|
+
self.some_enum_array = some_enum_array
|
143
|
+
end
|
144
|
+
|
145
|
+
# @override
|
146
|
+
def schema
|
147
|
+
'MySchemaWithComplexTypes'
|
148
|
+
end
|
149
|
+
|
150
|
+
# @override
|
151
|
+
def namespace
|
152
|
+
'com.my-namespace'
|
153
|
+
end
|
154
|
+
|
155
|
+
# @override
|
156
|
+
def to_h
|
157
|
+
{
|
158
|
+
'test_id' => @test_id,
|
159
|
+
'test_float' => @test_float,
|
160
|
+
'test_string_array' => @test_string_array,
|
161
|
+
'test_int_array' => @test_int_array,
|
162
|
+
'test_optional_int' => @test_optional_int,
|
163
|
+
'some_integer_map' => @some_integer_map,
|
164
|
+
'some_record' => @some_record&.to_h,
|
165
|
+
'some_optional_record' => @some_optional_record&.to_h,
|
166
|
+
'some_record_array' => @some_record_array.map { |v| v&.to_h },
|
167
|
+
'some_record_map' => @some_record_map.transform_values { |v| v&.to_h },
|
168
|
+
'some_enum_array' => @some_enum_array.map { |v| v&.to_h }
|
169
|
+
}
|
170
|
+
end
|
171
|
+
end
|
172
|
+
end
|
@@ -0,0 +1,95 @@
|
|
1
|
+
{
|
2
|
+
"namespace": "com.my-namespace",
|
3
|
+
"name": "MySchemaWithComplexTypes",
|
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": "test_float",
|
14
|
+
"type": "float",
|
15
|
+
"doc": "test float"
|
16
|
+
},
|
17
|
+
{
|
18
|
+
"name": "test_string_array",
|
19
|
+
"type": {
|
20
|
+
"type": "array",
|
21
|
+
"items": "string"
|
22
|
+
},
|
23
|
+
"default": ["test"]
|
24
|
+
},
|
25
|
+
{
|
26
|
+
"name": "test_int_array",
|
27
|
+
"type": {
|
28
|
+
"type": "array",
|
29
|
+
"items": "int"
|
30
|
+
},
|
31
|
+
"default": [123]
|
32
|
+
},
|
33
|
+
{
|
34
|
+
"name": "test_optional_int",
|
35
|
+
"type": [ "int", "null" ],
|
36
|
+
"default": 123
|
37
|
+
},
|
38
|
+
{
|
39
|
+
"name": "some_integer_map",
|
40
|
+
"doc": "some record map",
|
41
|
+
"type": {
|
42
|
+
"type": "map",
|
43
|
+
"values": "int"
|
44
|
+
},
|
45
|
+
"default": {"abc": 123}
|
46
|
+
},
|
47
|
+
{
|
48
|
+
"name": "some_record",
|
49
|
+
"type": {
|
50
|
+
"type": "record",
|
51
|
+
"name": "ARecord",
|
52
|
+
"fields": [
|
53
|
+
{
|
54
|
+
"name": "a_record_field",
|
55
|
+
"type": "string"
|
56
|
+
}
|
57
|
+
]
|
58
|
+
},
|
59
|
+
"default": {"a_record_field": "Test String"}
|
60
|
+
},
|
61
|
+
{
|
62
|
+
"name": "some_optional_record",
|
63
|
+
"doc": "some optional record",
|
64
|
+
"type": [ "null", "ARecord" ],
|
65
|
+
"default": null
|
66
|
+
},
|
67
|
+
{
|
68
|
+
"name": "some_record_array",
|
69
|
+
"doc": "some record array",
|
70
|
+
"type": {
|
71
|
+
"type": "array",
|
72
|
+
"items": "ARecord"
|
73
|
+
}
|
74
|
+
},
|
75
|
+
{
|
76
|
+
"name": "some_record_map",
|
77
|
+
"doc": "some record map",
|
78
|
+
"type": {
|
79
|
+
"type": "map",
|
80
|
+
"values": "ARecord"
|
81
|
+
}
|
82
|
+
},
|
83
|
+
{
|
84
|
+
"name": "some_enum_array",
|
85
|
+
"type": {
|
86
|
+
"type": "array",
|
87
|
+
"items": {
|
88
|
+
"type": "enum",
|
89
|
+
"name": "AnEnum",
|
90
|
+
"symbols": ["sym1", "sym2"]
|
91
|
+
}
|
92
|
+
}
|
93
|
+
}
|
94
|
+
]
|
95
|
+
}
|
data/spec/spec_helper.rb
CHANGED
@@ -13,6 +13,10 @@ require 'activerecord-import'
|
|
13
13
|
require 'handlers/my_batch_consumer'
|
14
14
|
require 'handlers/my_consumer'
|
15
15
|
require 'rspec/rails'
|
16
|
+
Dir['./spec/schema_classes/**/*.rb'].sort.each { |f| require f }
|
17
|
+
|
18
|
+
# Constants used for consumer specs
|
19
|
+
SCHEMA_CLASS_SETTINGS = { off: false, on: true }.freeze
|
16
20
|
|
17
21
|
class DeimosApp < Rails::Application
|
18
22
|
end
|
@@ -100,7 +104,7 @@ module DbConfigs
|
|
100
104
|
DB_OPTIONS.each do |options|
|
101
105
|
describe subject, :integration, db_config: options do
|
102
106
|
|
103
|
-
include_context
|
107
|
+
include_context('with DB')
|
104
108
|
describe options[:adapter] do # rubocop:disable RSpec/EmptyExampleGroup
|
105
109
|
self.instance_eval(&block)
|
106
110
|
end
|
@@ -192,6 +196,7 @@ RSpec.configure do |config|
|
|
192
196
|
deimos_config.logger = Logger.new('/dev/null')
|
193
197
|
deimos_config.logger.level = Logger::INFO
|
194
198
|
deimos_config.schema.backend = :avro_validation
|
199
|
+
deimos_config.schema.generated_class_path = 'spec/schema_classes'
|
195
200
|
end
|
196
201
|
end
|
197
202
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: deimos-ruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.12.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Daniel Orner
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-11-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: avro_turf
|
@@ -302,14 +302,14 @@ dependencies:
|
|
302
302
|
requirements:
|
303
303
|
- - '='
|
304
304
|
- !ruby/object:Gem::Version
|
305
|
-
version: 0.
|
305
|
+
version: 0.89.0
|
306
306
|
type: :development
|
307
307
|
prerelease: false
|
308
308
|
version_requirements: !ruby/object:Gem::Requirement
|
309
309
|
requirements:
|
310
310
|
- - '='
|
311
311
|
- !ruby/object:Gem::Version
|
312
|
-
version: 0.
|
312
|
+
version: 0.89.0
|
313
313
|
- !ruby/object:Gem::Dependency
|
314
314
|
name: rubocop-rspec
|
315
315
|
requirement: !ruby/object:Gem::Requirement
|
@@ -409,6 +409,9 @@ files:
|
|
409
409
|
- lib/deimos/schema_backends/avro_validation.rb
|
410
410
|
- lib/deimos/schema_backends/base.rb
|
411
411
|
- lib/deimos/schema_backends/mock.rb
|
412
|
+
- lib/deimos/schema_class/base.rb
|
413
|
+
- lib/deimos/schema_class/enum.rb
|
414
|
+
- lib/deimos/schema_class/record.rb
|
412
415
|
- lib/deimos/shared_config.rb
|
413
416
|
- lib/deimos/test_helpers.rb
|
414
417
|
- lib/deimos/tracing/datadog.rb
|
@@ -419,6 +422,7 @@ files:
|
|
419
422
|
- lib/deimos/utils/deadlock_retry.rb
|
420
423
|
- lib/deimos/utils/inline_consumer.rb
|
421
424
|
- lib/deimos/utils/lag_reporter.rb
|
425
|
+
- lib/deimos/utils/schema_class.rb
|
422
426
|
- lib/deimos/utils/schema_controller_mixin.rb
|
423
427
|
- lib/deimos/version.rb
|
424
428
|
- lib/generators/deimos/active_record/templates/migration.rb.tt
|
@@ -430,6 +434,10 @@ files:
|
|
430
434
|
- lib/generators/deimos/db_poller/templates/migration
|
431
435
|
- lib/generators/deimos/db_poller/templates/rails3_migration
|
432
436
|
- lib/generators/deimos/db_poller_generator.rb
|
437
|
+
- lib/generators/deimos/schema_class/templates/schema_class.rb.tt
|
438
|
+
- lib/generators/deimos/schema_class/templates/schema_enum.rb.tt
|
439
|
+
- lib/generators/deimos/schema_class/templates/schema_record.rb.tt
|
440
|
+
- lib/generators/deimos/schema_class_generator.rb
|
433
441
|
- lib/tasks/deimos.rake
|
434
442
|
- spec/active_record_batch_consumer_spec.rb
|
435
443
|
- spec/active_record_consume/batch_slicer_spec.rb
|
@@ -445,6 +453,8 @@ files:
|
|
445
453
|
- spec/consumer_spec.rb
|
446
454
|
- spec/deimos_spec.rb
|
447
455
|
- spec/generators/active_record_generator_spec.rb
|
456
|
+
- spec/generators/schema_class/my_schema_with_complex_types_spec.rb
|
457
|
+
- spec/generators/schema_class_generator_spec.rb
|
448
458
|
- spec/handlers/my_batch_consumer.rb
|
449
459
|
- spec/handlers/my_consumer.rb
|
450
460
|
- spec/kafka_listener_spec.rb
|
@@ -460,12 +470,18 @@ files:
|
|
460
470
|
- spec/schema_backends/avro_schema_registry_spec.rb
|
461
471
|
- spec/schema_backends/avro_validation_spec.rb
|
462
472
|
- spec/schema_backends/base_spec.rb
|
473
|
+
- spec/schema_classes/generated.rb
|
474
|
+
- spec/schema_classes/my_nested_schema.rb
|
475
|
+
- spec/schema_classes/my_schema.rb
|
476
|
+
- spec/schema_classes/my_schema_key.rb
|
477
|
+
- spec/schema_classes/my_schema_with_complex_types.rb
|
463
478
|
- spec/schemas/com/my-namespace/Generated.avsc
|
464
479
|
- spec/schemas/com/my-namespace/MyNestedSchema.avsc
|
465
480
|
- spec/schemas/com/my-namespace/MySchema-key.avsc
|
466
481
|
- spec/schemas/com/my-namespace/MySchema.avsc
|
467
482
|
- spec/schemas/com/my-namespace/MySchemaCompound-key.avsc
|
468
483
|
- spec/schemas/com/my-namespace/MySchemaWithBooleans.avsc
|
484
|
+
- spec/schemas/com/my-namespace/MySchemaWithComplexTypes.avsc
|
469
485
|
- spec/schemas/com/my-namespace/MySchemaWithDateTimes.avsc
|
470
486
|
- spec/schemas/com/my-namespace/MySchemaWithId.avsc
|
471
487
|
- spec/schemas/com/my-namespace/MySchemaWithUniqueId.avsc
|
@@ -528,6 +544,8 @@ test_files:
|
|
528
544
|
- spec/consumer_spec.rb
|
529
545
|
- spec/deimos_spec.rb
|
530
546
|
- spec/generators/active_record_generator_spec.rb
|
547
|
+
- spec/generators/schema_class/my_schema_with_complex_types_spec.rb
|
548
|
+
- spec/generators/schema_class_generator_spec.rb
|
531
549
|
- spec/handlers/my_batch_consumer.rb
|
532
550
|
- spec/handlers/my_consumer.rb
|
533
551
|
- spec/kafka_listener_spec.rb
|
@@ -543,12 +561,18 @@ test_files:
|
|
543
561
|
- spec/schema_backends/avro_schema_registry_spec.rb
|
544
562
|
- spec/schema_backends/avro_validation_spec.rb
|
545
563
|
- spec/schema_backends/base_spec.rb
|
564
|
+
- spec/schema_classes/generated.rb
|
565
|
+
- spec/schema_classes/my_nested_schema.rb
|
566
|
+
- spec/schema_classes/my_schema.rb
|
567
|
+
- spec/schema_classes/my_schema_key.rb
|
568
|
+
- spec/schema_classes/my_schema_with_complex_types.rb
|
546
569
|
- spec/schemas/com/my-namespace/Generated.avsc
|
547
570
|
- spec/schemas/com/my-namespace/MyNestedSchema.avsc
|
548
571
|
- spec/schemas/com/my-namespace/MySchema-key.avsc
|
549
572
|
- spec/schemas/com/my-namespace/MySchema.avsc
|
550
573
|
- spec/schemas/com/my-namespace/MySchemaCompound-key.avsc
|
551
574
|
- spec/schemas/com/my-namespace/MySchemaWithBooleans.avsc
|
575
|
+
- spec/schemas/com/my-namespace/MySchemaWithComplexTypes.avsc
|
552
576
|
- spec/schemas/com/my-namespace/MySchemaWithDateTimes.avsc
|
553
577
|
- spec/schemas/com/my-namespace/MySchemaWithId.avsc
|
554
578
|
- spec/schemas/com/my-namespace/MySchemaWithUniqueId.avsc
|