deimos-ruby 1.16.1 → 1.16.4
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.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/CHANGELOG.md +13 -0
- data/Gemfile +6 -0
- data/README.md +22 -0
- data/lib/deimos/active_record_consume/batch_consumption.rb +7 -2
- data/lib/deimos/active_record_consume/batch_slicer.rb +2 -0
- data/lib/deimos/active_record_consume/message_consumption.rb +8 -4
- data/lib/deimos/active_record_consumer.rb +7 -4
- data/lib/deimos/active_record_producer.rb +10 -0
- data/lib/deimos/backends/base.rb +4 -2
- data/lib/deimos/backends/kafka.rb +1 -0
- data/lib/deimos/backends/kafka_async.rb +1 -0
- data/lib/deimos/config/configuration.rb +4 -0
- data/lib/deimos/config/phobos_config.rb +2 -1
- data/lib/deimos/consume/batch_consumption.rb +8 -1
- data/lib/deimos/consume/message_consumption.rb +4 -1
- data/lib/deimos/instrumentation.rb +11 -4
- data/lib/deimos/kafka_message.rb +1 -0
- data/lib/deimos/kafka_source.rb +5 -0
- data/lib/deimos/kafka_topic_info.rb +4 -0
- data/lib/deimos/message.rb +19 -2
- data/lib/deimos/metrics/datadog.rb +2 -1
- data/lib/deimos/metrics/mock.rb +2 -2
- data/lib/deimos/metrics/provider.rb +6 -0
- data/lib/deimos/monkey_patches/phobos_cli.rb +1 -1
- data/lib/deimos/monkey_patches/phobos_producer.rb +1 -0
- data/lib/deimos/producer.rb +12 -6
- data/lib/deimos/schema_backends/base.rb +31 -17
- data/lib/deimos/schema_backends/mock.rb +2 -2
- data/lib/deimos/schema_class/base.rb +9 -5
- data/lib/deimos/schema_class/enum.rb +4 -2
- data/lib/deimos/schema_class/record.rb +12 -6
- data/lib/deimos/shared_config.rb +6 -2
- data/lib/deimos/test_helpers.rb +21 -4
- data/lib/deimos/tracing/datadog.rb +1 -1
- data/lib/deimos/tracing/mock.rb +4 -3
- data/lib/deimos/tracing/provider.rb +5 -0
- data/lib/deimos/utils/db_poller.rb +9 -1
- data/lib/deimos/utils/db_producer.rb +14 -2
- data/lib/deimos/utils/deadlock_retry.rb +3 -0
- data/lib/deimos/utils/inline_consumer.rb +14 -6
- data/lib/deimos/utils/lag_reporter.rb +11 -0
- data/lib/deimos/utils/schema_controller_mixin.rb +8 -0
- data/lib/deimos/version.rb +1 -1
- data/lib/deimos.rb +3 -2
- data/lib/generators/deimos/active_record_generator.rb +1 -1
- data/lib/generators/deimos/db_backend_generator.rb +1 -0
- data/lib/generators/deimos/db_poller_generator.rb +1 -0
- data/lib/generators/deimos/schema_class/templates/schema_record.rb.tt +13 -5
- data/lib/generators/deimos/schema_class_generator.rb +51 -24
- data/rbs_collection.lock.yaml +176 -0
- data/rbs_collection.yaml +15 -0
- data/regenerate_test_schema_classes.rb +68 -0
- data/sig/avro.rbs +14 -0
- data/sig/defs.rbs +1859 -0
- data/sig/fig_tree.rbs +2 -0
- data/spec/active_record_producer_spec.rb +24 -0
- data/spec/generators/schema_class/my_schema_spec.rb +16 -0
- data/spec/generators/schema_class/my_schema_with_circular_reference_spec.rb +1 -1
- data/spec/generators/schema_class/my_schema_with_complex_types_spec.rb +32 -24
- data/spec/producer_spec.rb +11 -11
- data/spec/schemas/{generated.rb → my_namespace/generated.rb} +28 -32
- data/spec/schemas/{my_nested_schema.rb → my_namespace/my_nested_schema.rb} +23 -16
- data/spec/schemas/{my_schema.rb → my_namespace/my_schema.rb} +12 -5
- data/spec/schemas/my_namespace/my_schema_compound_key.rb +41 -0
- data/spec/schemas/my_namespace/my_schema_id_key.rb +36 -0
- data/spec/schemas/{my_schema_key.rb → my_namespace/my_schema_key.rb} +3 -3
- data/spec/schemas/my_namespace/my_schema_with_boolean.rb +41 -0
- data/spec/schemas/{my_schema_with_circular_reference.rb → my_namespace/my_schema_with_circular_reference.rb} +15 -10
- data/spec/schemas/{my_schema_with_complex_type.rb → my_namespace/my_schema_with_complex_type.rb} +34 -49
- data/spec/schemas/my_namespace/my_schema_with_date_time.rb +56 -0
- data/spec/schemas/my_namespace/my_schema_with_id.rb +51 -0
- data/spec/schemas/my_namespace/my_schema_with_unique_id.rb +56 -0
- data/spec/schemas/my_namespace/wibble.rb +76 -0
- data/spec/schemas/my_namespace/widget.rb +56 -0
- data/spec/schemas/my_namespace/widget_the_second.rb +56 -0
- data/spec/schemas/request/create_topic.rb +36 -0
- data/spec/schemas/request/index.rb +36 -0
- data/spec/schemas/request/update_request.rb +36 -0
- data/spec/schemas/response/create_topic.rb +36 -0
- data/spec/schemas/response/index.rb +36 -0
- data/spec/schemas/response/update_response.rb +36 -0
- data/spec/snapshots/consumers-no-nest.snap +93 -86
- data/spec/snapshots/consumers.snap +94 -87
- data/spec/snapshots/consumers_and_producers-no-nest.snap +108 -87
- data/spec/snapshots/consumers_and_producers.snap +109 -88
- data/spec/snapshots/consumers_circular-no-nest.snap +93 -86
- data/spec/snapshots/consumers_circular.snap +94 -87
- data/spec/snapshots/consumers_complex_types-no-nest.snap +93 -86
- data/spec/snapshots/consumers_complex_types.snap +94 -87
- data/spec/snapshots/consumers_nested-no-nest.snap +93 -86
- data/spec/snapshots/consumers_nested.snap +94 -87
- data/spec/snapshots/namespace_folders.snap +111 -90
- data/spec/snapshots/producers_with_key-no-nest.snap +94 -87
- data/spec/snapshots/producers_with_key.snap +95 -88
- data/spec/spec_helper.rb +2 -1
- metadata +53 -15
data/sig/fig_tree.rbs
ADDED
@@ -45,6 +45,24 @@ describe Deimos::ActiveRecordProducer do
|
|
45
45
|
record_class Widget
|
46
46
|
end
|
47
47
|
stub_const('MyProducerWithUniqueID', producer_class)
|
48
|
+
|
49
|
+
producer_class = Class.new(Deimos::ActiveRecordProducer) do
|
50
|
+
schema 'MySchemaWithUniqueId'
|
51
|
+
namespace 'com.my-namespace'
|
52
|
+
topic 'my-topic-with-unique-id'
|
53
|
+
key_config field: :id
|
54
|
+
record_class Widget
|
55
|
+
|
56
|
+
# :nodoc:
|
57
|
+
def self.post_process(batch)
|
58
|
+
batch.each do |message|
|
59
|
+
message.test_id = 'post_processed'
|
60
|
+
message.save!
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
stub_const('MyProducerWithPostProcess', producer_class)
|
48
66
|
end
|
49
67
|
|
50
68
|
describe 'produce' do
|
@@ -85,6 +103,12 @@ describe Deimos::ActiveRecordProducer do
|
|
85
103
|
)
|
86
104
|
end
|
87
105
|
|
106
|
+
it 'should post process the batch of records in #send_events' do
|
107
|
+
widget = Widget.create!(test_id: 'abc3', some_int: 4)
|
108
|
+
MyProducerWithPostProcess.send_events([widget])
|
109
|
+
expect(widget.reload.test_id).to eq('post_processed')
|
110
|
+
end
|
111
|
+
|
88
112
|
end
|
89
113
|
end
|
90
114
|
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
RSpec.describe Schemas::MyNamespace::MySchema do
|
2
|
+
let(:key) { Schemas::MyNamespace::MySchemaKey.new(test_id: 123) }
|
3
|
+
|
4
|
+
it 'should produce a tombstone with a hash' do
|
5
|
+
result = described_class.tombstone({test_id: 123})
|
6
|
+
expect(result.payload_key).to eq(key)
|
7
|
+
expect(result.to_h).to eq({ payload_key: { 'test_id' => 123}})
|
8
|
+
end
|
9
|
+
|
10
|
+
it 'should work with a record' do
|
11
|
+
key = Schemas::MyNamespace::MySchemaKey.new(test_id: 123)
|
12
|
+
result = described_class.tombstone(key)
|
13
|
+
expect(result.payload_key).to eq(key)
|
14
|
+
expect(result.to_h).to eq({ payload_key: { 'test_id' => 123}})
|
15
|
+
end
|
16
|
+
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
# For testing the generated class.
|
4
|
-
RSpec.describe Schemas::MySchemaWithComplexType do
|
4
|
+
RSpec.describe Schemas::MyNamespace::MySchemaWithComplexType do
|
5
5
|
let(:payload_hash) do
|
6
6
|
{
|
7
7
|
test_id: 'test id',
|
@@ -9,16 +9,16 @@ RSpec.describe Schemas::MySchemaWithComplexType do
|
|
9
9
|
test_string_array: %w(abc def),
|
10
10
|
test_int_array: [123, 456],
|
11
11
|
some_integer_map: { 'int_1' => 1, 'int_2' => 2 },
|
12
|
-
some_record:
|
13
|
-
some_optional_record:
|
14
|
-
some_record_array: [
|
15
|
-
|
12
|
+
some_record: described_class::ARecord.new(a_record_field: 'field 1'),
|
13
|
+
some_optional_record: described_class::ARecord.new(a_record_field: 'field 2'),
|
14
|
+
some_record_array: [described_class::ARecord.new(a_record_field: 'field 3'),
|
15
|
+
described_class::ARecord.new(a_record_field: 'field 4')],
|
16
16
|
some_record_map: {
|
17
|
-
'record_1' =>
|
18
|
-
'record_2' =>
|
17
|
+
'record_1' => described_class::ARecord.new(a_record_field: 'field 5'),
|
18
|
+
'record_2' => described_class::ARecord.new(a_record_field: 'field 6')
|
19
19
|
},
|
20
|
-
some_enum_array: [
|
21
|
-
|
20
|
+
some_enum_array: [described_class::AnEnum.new('sym1'),
|
21
|
+
described_class::AnEnum.new('sym2')]
|
22
22
|
}
|
23
23
|
end
|
24
24
|
|
@@ -51,6 +51,14 @@ RSpec.describe Schemas::MySchemaWithComplexType do
|
|
51
51
|
|
52
52
|
end
|
53
53
|
|
54
|
+
describe '.tombstone' do
|
55
|
+
it 'should return a tombstone' do
|
56
|
+
record = described_class.tombstone('foo')
|
57
|
+
expect(record.tombstone_key).to eq('foo')
|
58
|
+
expect(record.to_h).to eq({payload_key: 'foo'})
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
54
62
|
describe 'base class methods' do
|
55
63
|
let(:klass) do
|
56
64
|
described_class.new(**payload_hash)
|
@@ -116,7 +124,7 @@ RSpec.describe Schemas::MySchemaWithComplexType do
|
|
116
124
|
payload_hash.delete(:some_record)
|
117
125
|
klass = described_class.new(**payload_hash)
|
118
126
|
expect(klass.some_record).
|
119
|
-
to eq(
|
127
|
+
to eq(described_class::ARecord.new(a_record_field: 'Test String'))
|
120
128
|
end
|
121
129
|
|
122
130
|
it 'should set some_record to nil' do
|
@@ -139,26 +147,26 @@ RSpec.describe Schemas::MySchemaWithComplexType do
|
|
139
147
|
|
140
148
|
it 'should get the value of some_record_array' do
|
141
149
|
some_record_array = klass.some_record_array
|
142
|
-
expect(some_record_array.first).to be_instance_of(
|
150
|
+
expect(some_record_array.first).to be_instance_of(described_class::ARecord)
|
143
151
|
expect(some_record_array.first.a_record_field).to eq('field 3')
|
144
152
|
end
|
145
153
|
|
146
154
|
it 'should get the value of some_record_map' do
|
147
155
|
some_record_map = klass.some_record_map
|
148
156
|
expect(some_record_map['record_1']).
|
149
|
-
to be_instance_of(
|
157
|
+
to be_instance_of(described_class::ARecord)
|
150
158
|
expect(some_record_map['record_1'].a_record_field).to eq('field 5')
|
151
159
|
end
|
152
160
|
|
153
161
|
it 'should get the value of some_enum_array' do
|
154
162
|
some_enum_array = klass.some_enum_array
|
155
|
-
expect(some_enum_array.first).to be_instance_of(
|
163
|
+
expect(some_enum_array.first).to be_instance_of(described_class::AnEnum)
|
156
164
|
expect(some_enum_array.first.value).to eq('sym1')
|
157
165
|
end
|
158
166
|
|
159
167
|
it 'should get the value of some_record' do
|
160
168
|
record = klass.some_record
|
161
|
-
expect(record).to be_instance_of(
|
169
|
+
expect(record).to be_instance_of(described_class::ARecord)
|
162
170
|
expect(record.a_record_field).to eq('field 1')
|
163
171
|
expect(record.to_h).to eq({ 'a_record_field' => 'field 1' })
|
164
172
|
end
|
@@ -180,40 +188,40 @@ RSpec.describe Schemas::MySchemaWithComplexType do
|
|
180
188
|
|
181
189
|
it 'should modify the value of some_optional_record' do
|
182
190
|
expect(klass.some_optional_record).
|
183
|
-
to eq(
|
184
|
-
klass.some_optional_record =
|
191
|
+
to eq(described_class::ARecord.new(a_record_field: 'field 2'))
|
192
|
+
klass.some_optional_record = described_class::ARecord.
|
185
193
|
new(a_record_field: 'new field')
|
186
194
|
|
187
|
-
expect(klass.some_optional_record).to eq(
|
195
|
+
expect(klass.some_optional_record).to eq(described_class::ARecord.
|
188
196
|
new(a_record_field: 'new field'))
|
189
197
|
expect(klass.some_optional_record.as_json).to eq({ 'a_record_field' => 'new field' })
|
190
198
|
end
|
191
199
|
|
192
200
|
it 'should accept a hash object inner records' do
|
193
201
|
klass.some_optional_record = { a_record_field: 'new field' }
|
194
|
-
expect(klass.some_optional_record).
|
195
|
-
new(a_record_field: 'new field'))
|
202
|
+
expect(klass.some_optional_record).
|
203
|
+
to eq(described_class::ARecord.new(a_record_field: 'new field'))
|
196
204
|
expect(klass.some_optional_record.as_json).to eq({ 'a_record_field' => 'new field' })
|
197
205
|
end
|
198
206
|
|
199
207
|
it 'should modify the value of some_enum_array' do
|
200
208
|
klass.some_enum_array.first.value = 'new_sym'
|
201
209
|
expect(klass.some_enum_array.first).
|
202
|
-
to eq(
|
210
|
+
to eq(described_class::AnEnum.new('new_sym'))
|
203
211
|
|
204
|
-
klass.some_enum_array.second.an_enum =
|
212
|
+
klass.some_enum_array.second.an_enum = described_class::AnEnum.
|
205
213
|
new('other_sym')
|
206
214
|
expect(klass.some_enum_array.second.an_enum).to eq('other_sym')
|
207
215
|
end
|
208
216
|
|
209
217
|
it 'should modify the value of some_record_map' do
|
210
218
|
klass.some_record_map['record_1'].a_record_field = 'new field'
|
211
|
-
expect(klass.some_record_map['record_1']).to eq(
|
219
|
+
expect(klass.some_record_map['record_1']).to eq(described_class::ARecord.
|
212
220
|
new(a_record_field: 'new field'))
|
213
221
|
|
214
|
-
klass.some_record_map['record_2'] =
|
222
|
+
klass.some_record_map['record_2'] = described_class::ARecord.
|
215
223
|
new(a_record_field: 'other field')
|
216
|
-
expect(klass.some_record_map['record_2']).to eq(
|
224
|
+
expect(klass.some_record_map['record_2']).to eq(described_class::ARecord.
|
217
225
|
new(a_record_field: 'other field'))
|
218
226
|
end
|
219
227
|
end
|
data/spec/producer_spec.rb
CHANGED
@@ -397,7 +397,7 @@ module ProducerTest
|
|
397
397
|
end
|
398
398
|
expect(MyProducer.encoder).to receive(:validate).and_raise('OH NOES')
|
399
399
|
expect {
|
400
|
-
MyProducer.publish(Schemas::MySchema.new(test_id: 'foo', some_int: 'invalid'))
|
400
|
+
MyProducer.publish(Schemas::MyNamespace::MySchema.new(test_id: 'foo', some_int: 'invalid'))
|
401
401
|
}.to raise_error('OH NOES')
|
402
402
|
Deimos.unsubscribe(subscriber)
|
403
403
|
end
|
@@ -420,8 +420,8 @@ module ProducerTest
|
|
420
420
|
).and_call_original
|
421
421
|
|
422
422
|
MyProducer.publish_list(
|
423
|
-
[Schemas::MySchema.new(test_id: 'foo', some_int: 123),
|
424
|
-
Schemas::MySchema.new(test_id: 'bar', some_int: 124)]
|
423
|
+
[Schemas::MyNamespace::MySchema.new(test_id: 'foo', some_int: 123),
|
424
|
+
Schemas::MyNamespace::MySchema.new(test_id: 'bar', some_int: 124)]
|
425
425
|
)
|
426
426
|
expect('my-topic').to have_sent('test_id' => 'foo', 'some_int' => 123)
|
427
427
|
expect('your-topic').not_to have_sent('test_id' => 'foo', 'some_int' => 123)
|
@@ -432,8 +432,8 @@ module ProducerTest
|
|
432
432
|
expect(described_class).not_to receive(:produce_batch)
|
433
433
|
Deimos.configure { |c| c.producers.disabled = true }
|
434
434
|
MyProducer.publish_list(
|
435
|
-
[Schemas::MySchema.new(test_id: 'foo', some_int: 123),
|
436
|
-
Schemas::MySchema.new(test_id: 'bar', some_int: 124)]
|
435
|
+
[Schemas::MyNamespace::MySchema.new(test_id: 'foo', some_int: 123),
|
436
|
+
Schemas::MyNamespace::MySchema.new(test_id: 'bar', some_int: 124)]
|
437
437
|
)
|
438
438
|
expect(MyProducer.topic).not_to have_sent(anything)
|
439
439
|
end
|
@@ -452,8 +452,8 @@ module ProducerTest
|
|
452
452
|
}, { topic: 'my-topic-value' })
|
453
453
|
|
454
454
|
MyProducer.publish_list(
|
455
|
-
[Schemas::MySchema.new(test_id: 'foo', some_int: 123),
|
456
|
-
Schemas::MySchema.new(test_id: 'bar', some_int: 124)]
|
455
|
+
[Schemas::MyNamespace::MySchema.new(test_id: 'foo', some_int: 123),
|
456
|
+
Schemas::MyNamespace::MySchema.new(test_id: 'bar', some_int: 124)]
|
457
457
|
)
|
458
458
|
end
|
459
459
|
|
@@ -464,19 +464,19 @@ module ProducerTest
|
|
464
464
|
{ topic: 'my-topic2-key' })
|
465
465
|
|
466
466
|
MySchemaProducer.publish_list(
|
467
|
-
[Schemas::MySchema.new(test_id: 'foo', some_int: 123, payload_key: { 'test_id' => 'foo_key' }),
|
468
|
-
Schemas::MySchema.new(test_id: 'bar', some_int: 124, payload_key: { 'test_id' => 'bar_key' })]
|
467
|
+
[Schemas::MyNamespace::MySchema.new(test_id: 'foo', some_int: 123, payload_key: { 'test_id' => 'foo_key' }),
|
468
|
+
Schemas::MyNamespace::MySchema.new(test_id: 'bar', some_int: 124, payload_key: { 'test_id' => 'bar_key' })]
|
469
469
|
)
|
470
470
|
end
|
471
471
|
|
472
472
|
it 'should properly encode and coerce values with a nested record' do
|
473
473
|
expect(MyNestedSchemaProducer.encoder).to receive(:encode_key).with('test_id', 'foo', topic: 'my-topic-key')
|
474
474
|
MyNestedSchemaProducer.publish(
|
475
|
-
Schemas::MyNestedSchema.new(
|
475
|
+
Schemas::MyNamespace::MyNestedSchema.new(
|
476
476
|
test_id: 'foo',
|
477
477
|
test_float: BigDecimal('123.456'),
|
478
478
|
test_array: ['1'],
|
479
|
-
some_nested_record: Schemas::MyNestedSchema::MyNestedRecord.new(
|
479
|
+
some_nested_record: Schemas::MyNamespace::MyNestedSchema::MyNestedRecord.new(
|
480
480
|
some_int: 123,
|
481
481
|
some_float: BigDecimal('456.789'),
|
482
482
|
some_string: '123',
|
@@ -1,7 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
# This file is autogenerated by Deimos, Do NOT modify
|
4
|
-
module Schemas
|
4
|
+
module Schemas; module MyNamespace
|
5
5
|
### Primary Schema Class ###
|
6
6
|
# Autogenerated Schema for Record at com.my-namespace.Generated
|
7
7
|
class Generated < Deimos::SchemaClass::Record
|
@@ -9,27 +9,27 @@ module Schemas
|
|
9
9
|
### Secondary Schema Classes ###
|
10
10
|
# Autogenerated Schema for Record at com.my-namespace.ARecord
|
11
11
|
class ARecord < Deimos::SchemaClass::Record
|
12
|
-
|
12
|
+
|
13
13
|
### Attribute Accessors ###
|
14
|
-
# @
|
14
|
+
# @return [String]
|
15
15
|
attr_accessor :a_record_field
|
16
|
-
|
16
|
+
|
17
17
|
# @override
|
18
18
|
def initialize(a_record_field: nil)
|
19
19
|
super
|
20
20
|
self.a_record_field = a_record_field
|
21
21
|
end
|
22
|
-
|
22
|
+
|
23
23
|
# @override
|
24
24
|
def schema
|
25
25
|
'ARecord'
|
26
26
|
end
|
27
|
-
|
27
|
+
|
28
28
|
# @override
|
29
29
|
def namespace
|
30
30
|
'com.my-namespace'
|
31
31
|
end
|
32
|
-
|
32
|
+
|
33
33
|
# @override
|
34
34
|
def as_json(_opts={})
|
35
35
|
{
|
@@ -42,22 +42,11 @@ module Schemas
|
|
42
42
|
class AnEnum < Deimos::SchemaClass::Enum
|
43
43
|
# @return ['sym1', 'sym2']
|
44
44
|
attr_accessor :an_enum
|
45
|
-
|
46
|
-
# :nodoc:
|
47
|
-
def initialize(an_enum)
|
48
|
-
super
|
49
|
-
self.an_enum = an_enum
|
50
|
-
end
|
51
|
-
|
45
|
+
|
52
46
|
# @override
|
53
47
|
def symbols
|
54
48
|
%w(sym1 sym2)
|
55
49
|
end
|
56
|
-
|
57
|
-
# @override
|
58
|
-
def as_json(_opts={})
|
59
|
-
@an_enum
|
60
|
-
end
|
61
50
|
end
|
62
51
|
|
63
52
|
|
@@ -68,34 +57,34 @@ module Schemas
|
|
68
57
|
attr_reader :a_record
|
69
58
|
|
70
59
|
### Attribute Accessors ###
|
71
|
-
# @
|
60
|
+
# @return [String]
|
72
61
|
attr_accessor :a_string
|
73
|
-
# @
|
62
|
+
# @return [Integer]
|
74
63
|
attr_accessor :a_int
|
75
|
-
# @
|
64
|
+
# @return [Integer]
|
76
65
|
attr_accessor :a_long
|
77
|
-
# @
|
66
|
+
# @return [Float]
|
78
67
|
attr_accessor :a_float
|
79
|
-
# @
|
68
|
+
# @return [Float]
|
80
69
|
attr_accessor :a_double
|
81
|
-
# @
|
70
|
+
# @return [nil, Integer]
|
82
71
|
attr_accessor :an_optional_int
|
83
|
-
# @
|
72
|
+
# @return [Array<Integer>]
|
84
73
|
attr_accessor :an_array
|
85
|
-
# @
|
74
|
+
# @return [Hash<String, String>]
|
86
75
|
attr_accessor :a_map
|
87
|
-
# @
|
76
|
+
# @return [String]
|
88
77
|
attr_accessor :timestamp
|
89
|
-
# @
|
78
|
+
# @return [String]
|
90
79
|
attr_accessor :message_id
|
91
80
|
|
92
81
|
### Attribute Writers ###
|
93
|
-
# @
|
82
|
+
# @return [AnEnum]
|
94
83
|
def an_enum=(value)
|
95
84
|
@an_enum = AnEnum.initialize_from_value(value)
|
96
85
|
end
|
97
86
|
|
98
|
-
# @
|
87
|
+
# @return [ARecord]
|
99
88
|
def a_record=(value)
|
100
89
|
@a_record = ARecord.initialize_from_value(value)
|
101
90
|
end
|
@@ -138,6 +127,13 @@ module Schemas
|
|
138
127
|
'com.my-namespace'
|
139
128
|
end
|
140
129
|
|
130
|
+
def self.tombstone(key)
|
131
|
+
record = self.new
|
132
|
+
record.tombstone_key = key
|
133
|
+
record.a_string = key
|
134
|
+
record
|
135
|
+
end
|
136
|
+
|
141
137
|
# @override
|
142
138
|
def as_json(_opts={})
|
143
139
|
{
|
@@ -156,4 +152,4 @@ module Schemas
|
|
156
152
|
}
|
157
153
|
end
|
158
154
|
end
|
159
|
-
end
|
155
|
+
end; end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
# This file is autogenerated by Deimos, Do NOT modify
|
4
|
-
module Schemas
|
4
|
+
module Schemas; module MyNamespace
|
5
5
|
### Primary Schema Class ###
|
6
6
|
# Autogenerated Schema for Record at com.my-namespace.MyNestedSchema
|
7
7
|
class MyNestedSchema < Deimos::SchemaClass::Record
|
@@ -9,17 +9,17 @@ module Schemas
|
|
9
9
|
### Secondary Schema Classes ###
|
10
10
|
# Autogenerated Schema for Record at com.my-namespace.MyNestedRecord
|
11
11
|
class MyNestedRecord < Deimos::SchemaClass::Record
|
12
|
-
|
12
|
+
|
13
13
|
### Attribute Accessors ###
|
14
|
-
# @
|
14
|
+
# @return [Integer]
|
15
15
|
attr_accessor :some_int
|
16
|
-
# @
|
16
|
+
# @return [Float]
|
17
17
|
attr_accessor :some_float
|
18
|
-
# @
|
18
|
+
# @return [String]
|
19
19
|
attr_accessor :some_string
|
20
|
-
# @
|
20
|
+
# @return [nil, Integer]
|
21
21
|
attr_accessor :some_optional_int
|
22
|
-
|
22
|
+
|
23
23
|
# @override
|
24
24
|
def initialize(some_int: nil,
|
25
25
|
some_float: nil,
|
@@ -31,17 +31,17 @@ module Schemas
|
|
31
31
|
self.some_string = some_string
|
32
32
|
self.some_optional_int = some_optional_int
|
33
33
|
end
|
34
|
-
|
34
|
+
|
35
35
|
# @override
|
36
36
|
def schema
|
37
37
|
'MyNestedRecord'
|
38
38
|
end
|
39
|
-
|
39
|
+
|
40
40
|
# @override
|
41
41
|
def namespace
|
42
42
|
'com.my-namespace'
|
43
43
|
end
|
44
|
-
|
44
|
+
|
45
45
|
# @override
|
46
46
|
def as_json(_opts={})
|
47
47
|
{
|
@@ -61,20 +61,20 @@ module Schemas
|
|
61
61
|
attr_reader :some_optional_record
|
62
62
|
|
63
63
|
### Attribute Accessors ###
|
64
|
-
# @
|
64
|
+
# @return [String]
|
65
65
|
attr_accessor :test_id
|
66
|
-
# @
|
66
|
+
# @return [Float]
|
67
67
|
attr_accessor :test_float
|
68
|
-
# @
|
68
|
+
# @return [Array<String>]
|
69
69
|
attr_accessor :test_array
|
70
70
|
|
71
71
|
### Attribute Writers ###
|
72
|
-
# @
|
72
|
+
# @return [MyNestedRecord]
|
73
73
|
def some_nested_record=(value)
|
74
74
|
@some_nested_record = MyNestedRecord.initialize_from_value(value)
|
75
75
|
end
|
76
76
|
|
77
|
-
# @
|
77
|
+
# @return [nil, MyNestedRecord]
|
78
78
|
def some_optional_record=(value)
|
79
79
|
@some_optional_record = MyNestedRecord.initialize_from_value(value)
|
80
80
|
end
|
@@ -103,6 +103,13 @@ module Schemas
|
|
103
103
|
'com.my-namespace'
|
104
104
|
end
|
105
105
|
|
106
|
+
def self.tombstone(key)
|
107
|
+
record = self.new
|
108
|
+
record.tombstone_key = key
|
109
|
+
record.test_id = key
|
110
|
+
record
|
111
|
+
end
|
112
|
+
|
106
113
|
# @override
|
107
114
|
def as_json(_opts={})
|
108
115
|
{
|
@@ -114,4 +121,4 @@ module Schemas
|
|
114
121
|
}
|
115
122
|
end
|
116
123
|
end
|
117
|
-
end
|
124
|
+
end; end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
# This file is autogenerated by Deimos, Do NOT modify
|
4
|
-
module Schemas
|
4
|
+
module Schemas; module MyNamespace
|
5
5
|
### Primary Schema Class ###
|
6
6
|
# Autogenerated Schema for Record at com.my-namespace.MySchema
|
7
7
|
class MySchema < Deimos::SchemaClass::Record
|
@@ -11,13 +11,13 @@ module Schemas
|
|
11
11
|
attr_reader :payload_key
|
12
12
|
|
13
13
|
### Attribute Accessors ###
|
14
|
-
# @
|
14
|
+
# @return [String]
|
15
15
|
attr_accessor :test_id
|
16
|
-
# @
|
16
|
+
# @return [Integer]
|
17
17
|
attr_accessor :some_int
|
18
18
|
|
19
19
|
### Attribute Writers ###
|
20
|
-
# @
|
20
|
+
# @return [MySchemaKey]
|
21
21
|
def payload_key=(value)
|
22
22
|
@payload_key = MySchemaKey.initialize_from_value(value)
|
23
23
|
end
|
@@ -42,6 +42,13 @@ module Schemas
|
|
42
42
|
'com.my-namespace'
|
43
43
|
end
|
44
44
|
|
45
|
+
def self.tombstone(key)
|
46
|
+
record = self.new
|
47
|
+
record.tombstone_key = MySchemaKey.initialize_from_value(key)
|
48
|
+
record.payload_key = key
|
49
|
+
record
|
50
|
+
end
|
51
|
+
|
45
52
|
# @override
|
46
53
|
def as_json(_opts={})
|
47
54
|
{
|
@@ -51,4 +58,4 @@ module Schemas
|
|
51
58
|
}
|
52
59
|
end
|
53
60
|
end
|
54
|
-
end
|
61
|
+
end; end
|
@@ -0,0 +1,41 @@
|
|
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.MySchemaCompound_key
|
7
|
+
class MySchemaCompoundKey < Deimos::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(part_one: nil,
|
17
|
+
part_two: nil)
|
18
|
+
super
|
19
|
+
self.part_one = part_one
|
20
|
+
self.part_two = part_two
|
21
|
+
end
|
22
|
+
|
23
|
+
# @override
|
24
|
+
def schema
|
25
|
+
'MySchemaCompound_key'
|
26
|
+
end
|
27
|
+
|
28
|
+
# @override
|
29
|
+
def namespace
|
30
|
+
'com.my-namespace'
|
31
|
+
end
|
32
|
+
|
33
|
+
# @override
|
34
|
+
def as_json(_opts={})
|
35
|
+
{
|
36
|
+
'part_one' => @part_one,
|
37
|
+
'part_two' => @part_two
|
38
|
+
}
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end; end
|
@@ -0,0 +1,36 @@
|
|
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.MySchemaId_key
|
7
|
+
class MySchemaIdKey < Deimos::SchemaClass::Record
|
8
|
+
|
9
|
+
### Attribute Accessors ###
|
10
|
+
# @return [Integer]
|
11
|
+
attr_accessor :id
|
12
|
+
|
13
|
+
# @override
|
14
|
+
def initialize(id: nil)
|
15
|
+
super
|
16
|
+
self.id = id
|
17
|
+
end
|
18
|
+
|
19
|
+
# @override
|
20
|
+
def schema
|
21
|
+
'MySchemaId_key'
|
22
|
+
end
|
23
|
+
|
24
|
+
# @override
|
25
|
+
def namespace
|
26
|
+
'com.my-namespace'
|
27
|
+
end
|
28
|
+
|
29
|
+
# @override
|
30
|
+
def as_json(_opts={})
|
31
|
+
{
|
32
|
+
'id' => @id
|
33
|
+
}
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end; end
|
@@ -1,13 +1,13 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
# This file is autogenerated by Deimos, Do NOT modify
|
4
|
-
module Schemas
|
4
|
+
module Schemas; module MyNamespace
|
5
5
|
### Primary Schema Class ###
|
6
6
|
# Autogenerated Schema for Record at com.my-namespace.MySchema_key
|
7
7
|
class MySchemaKey < Deimos::SchemaClass::Record
|
8
8
|
|
9
9
|
### Attribute Accessors ###
|
10
|
-
# @
|
10
|
+
# @return [String]
|
11
11
|
attr_accessor :test_id
|
12
12
|
|
13
13
|
# @override
|
@@ -33,4 +33,4 @@ module Schemas
|
|
33
33
|
}
|
34
34
|
end
|
35
35
|
end
|
36
|
-
end
|
36
|
+
end; end
|