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
@@ -8,7 +8,7 @@ module Schemas
|
|
8
8
|
class ARecord < Deimos::SchemaClass::Record
|
9
9
|
|
10
10
|
### Attribute Accessors ###
|
11
|
-
# @
|
11
|
+
# @return [String]
|
12
12
|
attr_accessor :a_record_field
|
13
13
|
|
14
14
|
# @override
|
@@ -85,7 +85,7 @@ module Schemas
|
|
85
85
|
class CreateTopic < Deimos::SchemaClass::Record
|
86
86
|
|
87
87
|
### Attribute Accessors ###
|
88
|
-
# @
|
88
|
+
# @return [String]
|
89
89
|
attr_accessor :response_id
|
90
90
|
|
91
91
|
# @override
|
@@ -130,34 +130,34 @@ module Schemas
|
|
130
130
|
attr_reader :a_record
|
131
131
|
|
132
132
|
### Attribute Accessors ###
|
133
|
-
# @
|
133
|
+
# @return [String]
|
134
134
|
attr_accessor :a_string
|
135
|
-
# @
|
135
|
+
# @return [Integer]
|
136
136
|
attr_accessor :a_int
|
137
|
-
# @
|
137
|
+
# @return [Integer]
|
138
138
|
attr_accessor :a_long
|
139
|
-
# @
|
139
|
+
# @return [Float]
|
140
140
|
attr_accessor :a_float
|
141
|
-
# @
|
141
|
+
# @return [Float]
|
142
142
|
attr_accessor :a_double
|
143
|
-
# @
|
143
|
+
# @return [nil, Integer]
|
144
144
|
attr_accessor :an_optional_int
|
145
|
-
# @
|
145
|
+
# @return [Array<Integer>]
|
146
146
|
attr_accessor :an_array
|
147
|
-
# @
|
147
|
+
# @return [Hash<String, String>]
|
148
148
|
attr_accessor :a_map
|
149
|
-
# @
|
149
|
+
# @return [String]
|
150
150
|
attr_accessor :timestamp
|
151
|
-
# @
|
151
|
+
# @return [String]
|
152
152
|
attr_accessor :message_id
|
153
153
|
|
154
154
|
### Attribute Writers ###
|
155
|
-
# @
|
155
|
+
# @return [AnEnum]
|
156
156
|
def an_enum=(value)
|
157
157
|
@an_enum = AnEnum.initialize_from_value(value)
|
158
158
|
end
|
159
159
|
|
160
|
-
# @
|
160
|
+
# @return [ARecord]
|
161
161
|
def a_record=(value)
|
162
162
|
@a_record = ARecord.initialize_from_value(value)
|
163
163
|
end
|
@@ -231,7 +231,7 @@ module Schemas
|
|
231
231
|
class Index < Deimos::SchemaClass::Record
|
232
232
|
|
233
233
|
### Attribute Accessors ###
|
234
|
-
# @
|
234
|
+
# @return [String]
|
235
235
|
attr_accessor :response_id
|
236
236
|
|
237
237
|
# @override
|
@@ -270,13 +270,13 @@ module Schemas
|
|
270
270
|
class MyNestedRecord < Deimos::SchemaClass::Record
|
271
271
|
|
272
272
|
### Attribute Accessors ###
|
273
|
-
# @
|
273
|
+
# @return [Integer]
|
274
274
|
attr_accessor :some_int
|
275
|
-
# @
|
275
|
+
# @return [Float]
|
276
276
|
attr_accessor :some_float
|
277
|
-
# @
|
277
|
+
# @return [String]
|
278
278
|
attr_accessor :some_string
|
279
|
-
# @
|
279
|
+
# @return [nil, Integer]
|
280
280
|
attr_accessor :some_optional_int
|
281
281
|
|
282
282
|
# @override
|
@@ -330,20 +330,20 @@ module Schemas
|
|
330
330
|
attr_reader :some_optional_record
|
331
331
|
|
332
332
|
### Attribute Accessors ###
|
333
|
-
# @
|
333
|
+
# @return [String]
|
334
334
|
attr_accessor :test_id
|
335
|
-
# @
|
335
|
+
# @return [Float]
|
336
336
|
attr_accessor :test_float
|
337
|
-
# @
|
337
|
+
# @return [Array<String>]
|
338
338
|
attr_accessor :test_array
|
339
339
|
|
340
340
|
### Attribute Writers ###
|
341
|
-
# @
|
341
|
+
# @return [MyNestedRecord]
|
342
342
|
def some_nested_record=(value)
|
343
343
|
@some_nested_record = MyNestedRecord.initialize_from_value(value)
|
344
344
|
end
|
345
345
|
|
346
|
-
# @
|
346
|
+
# @return [nil, MyNestedRecord]
|
347
347
|
def some_optional_record=(value)
|
348
348
|
@some_optional_record = MyNestedRecord.initialize_from_value(value)
|
349
349
|
end
|
@@ -400,13 +400,13 @@ module Schemas
|
|
400
400
|
attr_reader :payload_key
|
401
401
|
|
402
402
|
### Attribute Accessors ###
|
403
|
-
# @
|
403
|
+
# @return [String]
|
404
404
|
attr_accessor :test_id
|
405
|
-
# @
|
405
|
+
# @return [Integer]
|
406
406
|
attr_accessor :some_int
|
407
407
|
|
408
408
|
### Attribute Writers ###
|
409
|
-
# @
|
409
|
+
# @return [MySchemaKey]
|
410
410
|
def payload_key=(value)
|
411
411
|
@payload_key = MySchemaKey.initialize_from_value(value)
|
412
412
|
end
|
@@ -431,6 +431,13 @@ module Schemas
|
|
431
431
|
'com.my-namespace'
|
432
432
|
end
|
433
433
|
|
434
|
+
def self.tombstone(key)
|
435
|
+
record = self.allocate
|
436
|
+
record.tombstone_key = MySchemaKey.initialize_from_value(key)
|
437
|
+
record.payload_key = key
|
438
|
+
record
|
439
|
+
end
|
440
|
+
|
434
441
|
# @override
|
435
442
|
def as_json(_opts={})
|
436
443
|
{
|
@@ -453,9 +460,9 @@ module Schemas
|
|
453
460
|
class MySchemaCompoundKey < Deimos::SchemaClass::Record
|
454
461
|
|
455
462
|
### Attribute Accessors ###
|
456
|
-
# @
|
463
|
+
# @return [String]
|
457
464
|
attr_accessor :part_one
|
458
|
-
# @
|
465
|
+
# @return [String]
|
459
466
|
attr_accessor :part_two
|
460
467
|
|
461
468
|
# @override
|
@@ -497,7 +504,7 @@ module Schemas
|
|
497
504
|
class MySchemaIdKey < Deimos::SchemaClass::Record
|
498
505
|
|
499
506
|
### Attribute Accessors ###
|
500
|
-
# @
|
507
|
+
# @return [Integer]
|
501
508
|
attr_accessor :id
|
502
509
|
|
503
510
|
# @override
|
@@ -536,7 +543,7 @@ module Schemas
|
|
536
543
|
class MySchemaKey < Deimos::SchemaClass::Record
|
537
544
|
|
538
545
|
### Attribute Accessors ###
|
539
|
-
# @
|
546
|
+
# @return [String]
|
540
547
|
attr_accessor :test_id
|
541
548
|
|
542
549
|
# @override
|
@@ -575,9 +582,9 @@ module Schemas
|
|
575
582
|
class MySchemaWithBoolean < Deimos::SchemaClass::Record
|
576
583
|
|
577
584
|
### Attribute Accessors ###
|
578
|
-
# @
|
585
|
+
# @return [String]
|
579
586
|
attr_accessor :test_id
|
580
|
-
# @
|
587
|
+
# @return [Boolean]
|
581
588
|
attr_accessor :some_bool
|
582
589
|
|
583
590
|
# @override
|
@@ -623,9 +630,9 @@ module Schemas
|
|
623
630
|
attr_reader :properties
|
624
631
|
|
625
632
|
### Attribute Writers ###
|
626
|
-
# @
|
633
|
+
# @return [Hash<String, Property>]
|
627
634
|
def properties=(values)
|
628
|
-
@properties = values
|
635
|
+
@properties = values&.transform_values do |value|
|
629
636
|
Property.initialize_from_value(value)
|
630
637
|
end
|
631
638
|
end
|
@@ -682,57 +689,57 @@ module Schemas
|
|
682
689
|
attr_reader :some_enum_with_default
|
683
690
|
|
684
691
|
### Attribute Accessors ###
|
685
|
-
# @
|
692
|
+
# @return [String]
|
686
693
|
attr_accessor :test_id
|
687
|
-
# @
|
694
|
+
# @return [Float]
|
688
695
|
attr_accessor :test_float
|
689
|
-
# @
|
696
|
+
# @return [Array<String>]
|
690
697
|
attr_accessor :test_string_array
|
691
|
-
# @
|
698
|
+
# @return [Array<Integer>]
|
692
699
|
attr_accessor :test_int_array
|
693
|
-
# @
|
700
|
+
# @return [Integer, nil]
|
694
701
|
attr_accessor :test_optional_int
|
695
|
-
# @
|
702
|
+
# @return [Hash<String, Integer>]
|
696
703
|
attr_accessor :some_integer_map
|
697
704
|
|
698
705
|
### Attribute Writers ###
|
699
|
-
# @
|
706
|
+
# @return [ARecord]
|
700
707
|
def some_record=(value)
|
701
708
|
@some_record = ARecord.initialize_from_value(value)
|
702
709
|
end
|
703
710
|
|
704
|
-
# @
|
711
|
+
# @return [nil, ARecord]
|
705
712
|
def some_optional_record=(value)
|
706
713
|
@some_optional_record = ARecord.initialize_from_value(value)
|
707
714
|
end
|
708
715
|
|
709
|
-
# @
|
716
|
+
# @return [Array<ARecord>]
|
710
717
|
def some_record_array=(values)
|
711
|
-
@some_record_array = values
|
718
|
+
@some_record_array = values&.map do |value|
|
712
719
|
ARecord.initialize_from_value(value)
|
713
720
|
end
|
714
721
|
end
|
715
722
|
|
716
|
-
# @
|
723
|
+
# @return [Hash<String, ARecord>]
|
717
724
|
def some_record_map=(values)
|
718
|
-
@some_record_map = values
|
725
|
+
@some_record_map = values&.transform_values do |value|
|
719
726
|
ARecord.initialize_from_value(value)
|
720
727
|
end
|
721
728
|
end
|
722
729
|
|
723
|
-
# @
|
730
|
+
# @return [Array<AnEnum>]
|
724
731
|
def some_enum_array=(values)
|
725
|
-
@some_enum_array = values
|
732
|
+
@some_enum_array = values&.map do |value|
|
726
733
|
AnEnum.initialize_from_value(value)
|
727
734
|
end
|
728
735
|
end
|
729
736
|
|
730
|
-
# @
|
737
|
+
# @return [nil, AnotherEnum]
|
731
738
|
def some_optional_enum=(value)
|
732
739
|
@some_optional_enum = AnotherEnum.initialize_from_value(value)
|
733
740
|
end
|
734
741
|
|
735
|
-
# @
|
742
|
+
# @return [YetAnotherEnum]
|
736
743
|
def some_enum_with_default=(value)
|
737
744
|
@some_enum_with_default = YetAnotherEnum.initialize_from_value(value)
|
738
745
|
end
|
@@ -809,15 +816,15 @@ module Schemas
|
|
809
816
|
class MySchemaWithDateTime < Deimos::SchemaClass::Record
|
810
817
|
|
811
818
|
### Attribute Accessors ###
|
812
|
-
# @
|
819
|
+
# @return [String]
|
813
820
|
attr_accessor :test_id
|
814
|
-
# @
|
821
|
+
# @return [Integer, nil]
|
815
822
|
attr_accessor :updated_at
|
816
|
-
# @
|
823
|
+
# @return [nil, Integer]
|
817
824
|
attr_accessor :some_int
|
818
|
-
# @
|
825
|
+
# @return [nil, Integer]
|
819
826
|
attr_accessor :some_datetime_int
|
820
|
-
# @
|
827
|
+
# @return [String]
|
821
828
|
attr_accessor :timestamp
|
822
829
|
|
823
830
|
# @override
|
@@ -868,13 +875,13 @@ module Schemas
|
|
868
875
|
class MySchemaWithId < Deimos::SchemaClass::Record
|
869
876
|
|
870
877
|
### Attribute Accessors ###
|
871
|
-
# @
|
878
|
+
# @return [String]
|
872
879
|
attr_accessor :test_id
|
873
|
-
# @
|
880
|
+
# @return [Integer]
|
874
881
|
attr_accessor :some_int
|
875
|
-
# @
|
882
|
+
# @return [String]
|
876
883
|
attr_accessor :message_id
|
877
|
-
# @
|
884
|
+
# @return [String]
|
878
885
|
attr_accessor :timestamp
|
879
886
|
|
880
887
|
# @override
|
@@ -922,15 +929,15 @@ module Schemas
|
|
922
929
|
class MySchemaWithUniqueId < Deimos::SchemaClass::Record
|
923
930
|
|
924
931
|
### Attribute Accessors ###
|
925
|
-
# @
|
932
|
+
# @return [Integer]
|
926
933
|
attr_accessor :id
|
927
|
-
# @
|
934
|
+
# @return [String]
|
928
935
|
attr_accessor :test_id
|
929
|
-
# @
|
936
|
+
# @return [Integer]
|
930
937
|
attr_accessor :some_int
|
931
|
-
# @
|
938
|
+
# @return [String]
|
932
939
|
attr_accessor :message_id
|
933
|
-
# @
|
940
|
+
# @return [String]
|
934
941
|
attr_accessor :timestamp
|
935
942
|
|
936
943
|
# @override
|
@@ -981,7 +988,7 @@ module Schemas
|
|
981
988
|
class Property < Deimos::SchemaClass::Record
|
982
989
|
|
983
990
|
### Attribute Accessors ###
|
984
|
-
# @
|
991
|
+
# @return [Boolean, Integer, Integer, Float, Float, String, Array<Property>, Hash<String, Property>]
|
985
992
|
attr_accessor :property
|
986
993
|
|
987
994
|
# @override
|
@@ -1020,7 +1027,7 @@ module Schemas
|
|
1020
1027
|
class UpdateRequest < Deimos::SchemaClass::Record
|
1021
1028
|
|
1022
1029
|
### Attribute Accessors ###
|
1023
|
-
# @
|
1030
|
+
# @return [String]
|
1024
1031
|
attr_accessor :update_request_id
|
1025
1032
|
|
1026
1033
|
# @override
|
@@ -1059,7 +1066,7 @@ module Schemas
|
|
1059
1066
|
class UpdateResponse < Deimos::SchemaClass::Record
|
1060
1067
|
|
1061
1068
|
### Attribute Accessors ###
|
1062
|
-
# @
|
1069
|
+
# @return [String]
|
1063
1070
|
attr_accessor :update_response_id
|
1064
1071
|
|
1065
1072
|
# @override
|
@@ -1098,23 +1105,23 @@ module Schemas
|
|
1098
1105
|
class Wibble < Deimos::SchemaClass::Record
|
1099
1106
|
|
1100
1107
|
### Attribute Accessors ###
|
1101
|
-
# @
|
1108
|
+
# @return [Integer]
|
1102
1109
|
attr_accessor :id
|
1103
|
-
# @
|
1110
|
+
# @return [Integer]
|
1104
1111
|
attr_accessor :wibble_id
|
1105
|
-
# @
|
1112
|
+
# @return [String]
|
1106
1113
|
attr_accessor :name
|
1107
|
-
# @
|
1114
|
+
# @return [String]
|
1108
1115
|
attr_accessor :floop
|
1109
|
-
# @
|
1116
|
+
# @return [Integer]
|
1110
1117
|
attr_accessor :birthday_int
|
1111
|
-
# @
|
1118
|
+
# @return [Integer]
|
1112
1119
|
attr_accessor :birthday_long
|
1113
|
-
# @
|
1120
|
+
# @return [nil, Integer]
|
1114
1121
|
attr_accessor :birthday_optional
|
1115
|
-
# @
|
1122
|
+
# @return [Integer]
|
1116
1123
|
attr_accessor :updated_at
|
1117
|
-
# @
|
1124
|
+
# @return [Integer]
|
1118
1125
|
attr_accessor :created_at
|
1119
1126
|
|
1120
1127
|
# @override
|
@@ -1177,15 +1184,15 @@ module Schemas
|
|
1177
1184
|
class Widget < Deimos::SchemaClass::Record
|
1178
1185
|
|
1179
1186
|
### Attribute Accessors ###
|
1180
|
-
# @
|
1187
|
+
# @return [Integer]
|
1181
1188
|
attr_accessor :id
|
1182
|
-
# @
|
1189
|
+
# @return [Integer]
|
1183
1190
|
attr_accessor :widget_id
|
1184
|
-
# @
|
1191
|
+
# @return [String]
|
1185
1192
|
attr_accessor :name
|
1186
|
-
# @
|
1193
|
+
# @return [Integer]
|
1187
1194
|
attr_accessor :updated_at
|
1188
|
-
# @
|
1195
|
+
# @return [Integer]
|
1189
1196
|
attr_accessor :created_at
|
1190
1197
|
|
1191
1198
|
# @override
|
@@ -1236,15 +1243,15 @@ module Schemas
|
|
1236
1243
|
class WidgetTheSecond < Deimos::SchemaClass::Record
|
1237
1244
|
|
1238
1245
|
### Attribute Accessors ###
|
1239
|
-
# @
|
1246
|
+
# @return [Integer]
|
1240
1247
|
attr_accessor :id
|
1241
|
-
# @
|
1248
|
+
# @return [Integer]
|
1242
1249
|
attr_accessor :widget_id
|
1243
|
-
# @
|
1250
|
+
# @return [String]
|
1244
1251
|
attr_accessor :model_id
|
1245
|
-
# @
|
1252
|
+
# @return [Integer]
|
1246
1253
|
attr_accessor :updated_at
|
1247
|
-
# @
|
1254
|
+
# @return [Integer]
|
1248
1255
|
attr_accessor :created_at
|
1249
1256
|
|
1250
1257
|
# @override
|