deimos-ruby 2.0.4 → 2.0.5

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.
@@ -1012,6 +1012,77 @@ module Schemas
1012
1012
  end
1013
1013
 
1014
1014
 
1015
+ spec/app/lib/schema_classes/my_schema_with_union_type.rb:
1016
+ # frozen_string_literal: true
1017
+
1018
+ # This file is autogenerated by Deimos, Do NOT modify
1019
+ module Schemas
1020
+ ### Primary Schema Class ###
1021
+ # Autogenerated Schema for Record at com.my-namespace.MySchemaWithUnionType
1022
+ class MySchemaWithUnionType < Deimos::SchemaClass::Record
1023
+
1024
+ ### Attribute Readers ###
1025
+ # @return [nil, Record1, Record2, Record3, Record4, Integer, Array<String>]
1026
+ attr_reader :test_union_type
1027
+
1028
+ ### Attribute Accessors ###
1029
+ # @return [String]
1030
+ attr_accessor :test_id
1031
+ # @return [nil, Integer]
1032
+ attr_accessor :test_long
1033
+
1034
+ ### Attribute Writers ###
1035
+ # @return [nil, Record1, Record2, Record3, Record4, Integer, Array<String>]
1036
+ def test_union_type=(value)
1037
+ @test_union_type = initialize_test_union_type_type(value)
1038
+ end
1039
+
1040
+ # Helper method to determine which schema type to use for test_union_type
1041
+ # @param value [Hash, nil]
1042
+ # @return [Object, nil]
1043
+ def initialize_test_union_type_type(value)
1044
+ return nil if value.nil?
1045
+
1046
+ klass = [Record1, Record2, Record3, Record4].find do |candidate|
1047
+ fields = candidate.new.as_json.keys
1048
+ (value.keys - fields).empty?
1049
+ end
1050
+
1051
+ klass.initialize_from_value(value)
1052
+ end
1053
+
1054
+ # @override
1055
+ def initialize(test_id: "",
1056
+ test_long: nil,
1057
+ test_union_type: nil)
1058
+ super
1059
+ self.test_id = test_id
1060
+ self.test_long = test_long
1061
+ self.test_union_type = test_union_type
1062
+ end
1063
+
1064
+ # @override
1065
+ def schema
1066
+ 'MySchemaWithUnionType'
1067
+ end
1068
+
1069
+ # @override
1070
+ def namespace
1071
+ 'com.my-namespace'
1072
+ end
1073
+
1074
+ # @override
1075
+ def as_json(_opts={})
1076
+ {
1077
+ 'test_id' => @test_id,
1078
+ 'test_long' => @test_long,
1079
+ 'test_union_type' => @test_union_type&.as_json
1080
+ }
1081
+ end
1082
+ end
1083
+ end
1084
+
1085
+
1015
1086
  spec/app/lib/schema_classes/my_schema_with_unique_id.rb:
1016
1087
  # frozen_string_literal: true
1017
1088
 
@@ -1110,6 +1181,167 @@ module Schemas
1110
1181
  end
1111
1182
 
1112
1183
 
1184
+ spec/app/lib/schema_classes/record1.rb:
1185
+ # frozen_string_literal: true
1186
+
1187
+ # This file is autogenerated by Deimos, Do NOT modify
1188
+ module Schemas
1189
+ ### Primary Schema Class ###
1190
+ # Autogenerated Schema for Record at com.flipp.content.Record1
1191
+ class Record1 < Deimos::SchemaClass::Record
1192
+
1193
+ ### Attribute Accessors ###
1194
+ # @return [Hash<String, Integer>]
1195
+ attr_accessor :record1_map
1196
+ # @return [Integer]
1197
+ attr_accessor :record1_id
1198
+
1199
+ # @override
1200
+ def initialize(record1_map: {},
1201
+ record1_id: 0)
1202
+ super
1203
+ self.record1_map = record1_map
1204
+ self.record1_id = record1_id
1205
+ end
1206
+
1207
+ # @override
1208
+ def schema
1209
+ 'Record1'
1210
+ end
1211
+
1212
+ # @override
1213
+ def namespace
1214
+ 'com.flipp.content'
1215
+ end
1216
+
1217
+ # @override
1218
+ def as_json(_opts={})
1219
+ {
1220
+ 'record1_map' => @record1_map,
1221
+ 'record1_id' => @record1_id
1222
+ }
1223
+ end
1224
+ end
1225
+ end
1226
+
1227
+
1228
+ spec/app/lib/schema_classes/record2.rb:
1229
+ # frozen_string_literal: true
1230
+
1231
+ # This file is autogenerated by Deimos, Do NOT modify
1232
+ module Schemas
1233
+ ### Primary Schema Class ###
1234
+ # Autogenerated Schema for Record at com.flipp.content.Record2
1235
+ class Record2 < Deimos::SchemaClass::Record
1236
+
1237
+ ### Attribute Accessors ###
1238
+ # @return [String]
1239
+ attr_accessor :record2_id
1240
+
1241
+ # @override
1242
+ def initialize(record2_id: "")
1243
+ super
1244
+ self.record2_id = record2_id
1245
+ end
1246
+
1247
+ # @override
1248
+ def schema
1249
+ 'Record2'
1250
+ end
1251
+
1252
+ # @override
1253
+ def namespace
1254
+ 'com.flipp.content'
1255
+ end
1256
+
1257
+ # @override
1258
+ def as_json(_opts={})
1259
+ {
1260
+ 'record2_id' => @record2_id
1261
+ }
1262
+ end
1263
+ end
1264
+ end
1265
+
1266
+
1267
+ spec/app/lib/schema_classes/record3.rb:
1268
+ # frozen_string_literal: true
1269
+
1270
+ # This file is autogenerated by Deimos, Do NOT modify
1271
+ module Schemas
1272
+ ### Primary Schema Class ###
1273
+ # Autogenerated Schema for Record at com.flipp.content.Record3
1274
+ class Record3 < Deimos::SchemaClass::Record
1275
+
1276
+ ### Attribute Accessors ###
1277
+ # @return [Float]
1278
+ attr_accessor :record3_id
1279
+
1280
+ # @override
1281
+ def initialize(record3_id: 0.0)
1282
+ super
1283
+ self.record3_id = record3_id
1284
+ end
1285
+
1286
+ # @override
1287
+ def schema
1288
+ 'Record3'
1289
+ end
1290
+
1291
+ # @override
1292
+ def namespace
1293
+ 'com.flipp.content'
1294
+ end
1295
+
1296
+ # @override
1297
+ def as_json(_opts={})
1298
+ {
1299
+ 'record3_id' => @record3_id
1300
+ }
1301
+ end
1302
+ end
1303
+ end
1304
+
1305
+
1306
+ spec/app/lib/schema_classes/record4.rb:
1307
+ # frozen_string_literal: true
1308
+
1309
+ # This file is autogenerated by Deimos, Do NOT modify
1310
+ module Schemas
1311
+ ### Primary Schema Class ###
1312
+ # Autogenerated Schema for Record at com.flipp.content.Record4
1313
+ class Record4 < Deimos::SchemaClass::Record
1314
+
1315
+ ### Attribute Accessors ###
1316
+ # @return [Integer]
1317
+ attr_accessor :record4_id
1318
+
1319
+ # @override
1320
+ def initialize(record4_id: 0)
1321
+ super
1322
+ self.record4_id = record4_id
1323
+ end
1324
+
1325
+ # @override
1326
+ def schema
1327
+ 'Record4'
1328
+ end
1329
+
1330
+ # @override
1331
+ def namespace
1332
+ 'com.flipp.content'
1333
+ end
1334
+
1335
+ # @override
1336
+ def as_json(_opts={})
1337
+ {
1338
+ 'record4_id' => @record4_id
1339
+ }
1340
+ end
1341
+ end
1342
+ end
1343
+
1344
+
1113
1345
  spec/app/lib/schema_classes/update_request.rb:
1114
1346
  # frozen_string_literal: true
1115
1347
 
@@ -1072,6 +1072,208 @@ module Schemas
1072
1072
  end
1073
1073
 
1074
1074
 
1075
+ spec/app/lib/schema_classes/my_schema_with_union_type.rb:
1076
+ # frozen_string_literal: true
1077
+
1078
+ # This file is autogenerated by Deimos, Do NOT modify
1079
+ module Schemas
1080
+ ### Primary Schema Class ###
1081
+ # Autogenerated Schema for Record at com.my-namespace.MySchemaWithUnionType
1082
+ class MySchemaWithUnionType < Deimos::SchemaClass::Record
1083
+
1084
+ ### Secondary Schema Classes ###
1085
+ # Autogenerated Schema for Record at com.flipp.content.Record1
1086
+ class Record1 < Deimos::SchemaClass::Record
1087
+
1088
+ ### Attribute Accessors ###
1089
+ # @return [Hash<String, Integer>]
1090
+ attr_accessor :record1_map
1091
+ # @return [Integer]
1092
+ attr_accessor :record1_id
1093
+
1094
+ # @override
1095
+ def initialize(record1_map: {},
1096
+ record1_id: 0)
1097
+ super
1098
+ self.record1_map = record1_map
1099
+ self.record1_id = record1_id
1100
+ end
1101
+
1102
+ # @override
1103
+ def schema
1104
+ 'Record1'
1105
+ end
1106
+
1107
+ # @override
1108
+ def namespace
1109
+ 'com.flipp.content'
1110
+ end
1111
+
1112
+ # @override
1113
+ def as_json(_opts={})
1114
+ {
1115
+ 'record1_map' => @record1_map,
1116
+ 'record1_id' => @record1_id
1117
+ }
1118
+ end
1119
+ end
1120
+
1121
+ # Autogenerated Schema for Record at com.flipp.content.Record2
1122
+ class Record2 < Deimos::SchemaClass::Record
1123
+
1124
+ ### Attribute Accessors ###
1125
+ # @return [String]
1126
+ attr_accessor :record2_id
1127
+
1128
+ # @override
1129
+ def initialize(record2_id: "")
1130
+ super
1131
+ self.record2_id = record2_id
1132
+ end
1133
+
1134
+ # @override
1135
+ def schema
1136
+ 'Record2'
1137
+ end
1138
+
1139
+ # @override
1140
+ def namespace
1141
+ 'com.flipp.content'
1142
+ end
1143
+
1144
+ # @override
1145
+ def as_json(_opts={})
1146
+ {
1147
+ 'record2_id' => @record2_id
1148
+ }
1149
+ end
1150
+ end
1151
+
1152
+ # Autogenerated Schema for Record at com.flipp.content.Record3
1153
+ class Record3 < Deimos::SchemaClass::Record
1154
+
1155
+ ### Attribute Accessors ###
1156
+ # @return [Float]
1157
+ attr_accessor :record3_id
1158
+
1159
+ # @override
1160
+ def initialize(record3_id: 0.0)
1161
+ super
1162
+ self.record3_id = record3_id
1163
+ end
1164
+
1165
+ # @override
1166
+ def schema
1167
+ 'Record3'
1168
+ end
1169
+
1170
+ # @override
1171
+ def namespace
1172
+ 'com.flipp.content'
1173
+ end
1174
+
1175
+ # @override
1176
+ def as_json(_opts={})
1177
+ {
1178
+ 'record3_id' => @record3_id
1179
+ }
1180
+ end
1181
+ end
1182
+
1183
+ # Autogenerated Schema for Record at com.flipp.content.Record4
1184
+ class Record4 < Deimos::SchemaClass::Record
1185
+
1186
+ ### Attribute Accessors ###
1187
+ # @return [Integer]
1188
+ attr_accessor :record4_id
1189
+
1190
+ # @override
1191
+ def initialize(record4_id: 0)
1192
+ super
1193
+ self.record4_id = record4_id
1194
+ end
1195
+
1196
+ # @override
1197
+ def schema
1198
+ 'Record4'
1199
+ end
1200
+
1201
+ # @override
1202
+ def namespace
1203
+ 'com.flipp.content'
1204
+ end
1205
+
1206
+ # @override
1207
+ def as_json(_opts={})
1208
+ {
1209
+ 'record4_id' => @record4_id
1210
+ }
1211
+ end
1212
+ end
1213
+
1214
+
1215
+ ### Attribute Readers ###
1216
+ # @return [nil, Record1, Record2, Record3, Record4, Integer, Array<String>]
1217
+ attr_reader :test_union_type
1218
+
1219
+ ### Attribute Accessors ###
1220
+ # @return [String]
1221
+ attr_accessor :test_id
1222
+ # @return [nil, Integer]
1223
+ attr_accessor :test_long
1224
+
1225
+ ### Attribute Writers ###
1226
+ # @return [nil, Record1, Record2, Record3, Record4, Integer, Array<String>]
1227
+ def test_union_type=(value)
1228
+ @test_union_type = initialize_test_union_type_type(value)
1229
+ end
1230
+
1231
+ # Helper method to determine which schema type to use for test_union_type
1232
+ # @param value [Hash, nil]
1233
+ # @return [Object, nil]
1234
+ def initialize_test_union_type_type(value)
1235
+ return nil if value.nil?
1236
+
1237
+ klass = [Record1, Record2, Record3, Record4].find do |candidate|
1238
+ fields = candidate.new.as_json.keys
1239
+ (value.keys - fields).empty?
1240
+ end
1241
+
1242
+ klass.initialize_from_value(value)
1243
+ end
1244
+
1245
+ # @override
1246
+ def initialize(test_id: "",
1247
+ test_long: nil,
1248
+ test_union_type: nil)
1249
+ super
1250
+ self.test_id = test_id
1251
+ self.test_long = test_long
1252
+ self.test_union_type = test_union_type
1253
+ end
1254
+
1255
+ # @override
1256
+ def schema
1257
+ 'MySchemaWithUnionType'
1258
+ end
1259
+
1260
+ # @override
1261
+ def namespace
1262
+ 'com.my-namespace'
1263
+ end
1264
+
1265
+ # @override
1266
+ def as_json(_opts={})
1267
+ {
1268
+ 'test_id' => @test_id,
1269
+ 'test_long' => @test_long,
1270
+ 'test_union_type' => @test_union_type&.as_json
1271
+ }
1272
+ end
1273
+ end
1274
+ end
1275
+
1276
+
1075
1277
  spec/app/lib/schema_classes/my_schema_with_unique_id.rb:
1076
1278
  # frozen_string_literal: true
1077
1279
 
data/spec/spec_helper.rb CHANGED
@@ -276,6 +276,31 @@ RSpec.shared_context('with widgets') do
276
276
  end
277
277
  end
278
278
 
279
+ RSpec.shared_context('with widget_with_union_types') do
280
+ before(:all) do
281
+ ActiveRecord::Base.connection.create_table(:widget_with_union_types, force: true) do |t|
282
+ t.string(:test_id)
283
+ t.bigint(:test_long)
284
+ t.json(:test_union_type)
285
+
286
+ t.timestamps
287
+ end
288
+
289
+ # :nodoc:
290
+ class WidgetWithUnionType < ActiveRecord::Base
291
+ # @return [String]
292
+ def generated_id
293
+ 'generated_id'
294
+ end
295
+ end
296
+ end
297
+
298
+ after(:all) do
299
+ ActiveRecord::Base.connection.drop_table(:widget_with_union_types)
300
+ end
301
+ end
302
+
303
+
279
304
  RSpec.shared_context('with DB') do
280
305
  before(:all) do
281
306
  setup_db(self.class.metadata[:db_config] || DbConfigs::DB_OPTIONS.last)
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: 2.0.4
4
+ version: 2.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel Orner
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2025-03-17 00:00:00.000000000 Z
11
+ date: 2025-03-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: avro_turf
@@ -568,6 +568,7 @@ files:
568
568
  - spec/schemas/com/my-namespace/MySchemaWithDateTimes.avsc
569
569
  - spec/schemas/com/my-namespace/MySchemaWithId.avsc
570
570
  - spec/schemas/com/my-namespace/MySchemaWithTitle.avsc
571
+ - spec/schemas/com/my-namespace/MySchemaWithUnionType.avsc
571
572
  - spec/schemas/com/my-namespace/MySchemaWithUniqueId.avsc
572
573
  - spec/schemas/com/my-namespace/MySchema_key.avsc
573
574
  - spec/schemas/com/my-namespace/Wibble.avsc
@@ -592,6 +593,7 @@ files:
592
593
  - spec/schemas/my_namespace/my_schema_with_complex_type.rb
593
594
  - spec/schemas/my_namespace/my_schema_with_date_time.rb
594
595
  - spec/schemas/my_namespace/my_schema_with_id.rb
596
+ - spec/schemas/my_namespace/my_schema_with_union_type.rb
595
597
  - spec/schemas/my_namespace/my_schema_with_unique_id.rb
596
598
  - spec/schemas/my_namespace/my_updated_schema.rb
597
599
  - spec/schemas/my_namespace/request/create_topic.rb
@@ -695,6 +697,7 @@ test_files:
695
697
  - spec/schemas/com/my-namespace/MySchemaWithDateTimes.avsc
696
698
  - spec/schemas/com/my-namespace/MySchemaWithId.avsc
697
699
  - spec/schemas/com/my-namespace/MySchemaWithTitle.avsc
700
+ - spec/schemas/com/my-namespace/MySchemaWithUnionType.avsc
698
701
  - spec/schemas/com/my-namespace/MySchemaWithUniqueId.avsc
699
702
  - spec/schemas/com/my-namespace/MySchema_key.avsc
700
703
  - spec/schemas/com/my-namespace/Wibble.avsc
@@ -719,6 +722,7 @@ test_files:
719
722
  - spec/schemas/my_namespace/my_schema_with_complex_type.rb
720
723
  - spec/schemas/my_namespace/my_schema_with_date_time.rb
721
724
  - spec/schemas/my_namespace/my_schema_with_id.rb
725
+ - spec/schemas/my_namespace/my_schema_with_union_type.rb
722
726
  - spec/schemas/my_namespace/my_schema_with_unique_id.rb
723
727
  - spec/schemas/my_namespace/my_updated_schema.rb
724
728
  - spec/schemas/my_namespace/request/create_topic.rb