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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +4 -0
- data/lib/deimos/schema_backends/avro_schema_coercer.rb +39 -1
- data/lib/deimos/version.rb +1 -1
- data/lib/generators/deimos/schema_class/templates/schema_record.rb.tt +18 -0
- data/lib/generators/deimos/schema_class_generator.rb +17 -2
- data/spec/active_record_producer_spec.rb +111 -5
- data/spec/schemas/com/my-namespace/MySchemaWithUnionType.avsc +91 -0
- data/spec/schemas/my_namespace/my_schema_with_union_type.rb +185 -0
- data/spec/snapshots/consumers-no-nest.snap +232 -0
- data/spec/snapshots/consumers.snap +202 -0
- data/spec/snapshots/consumers_and_producers-no-nest.snap +232 -0
- data/spec/snapshots/consumers_and_producers.snap +202 -0
- data/spec/snapshots/consumers_circular-no-nest.snap +232 -0
- data/spec/snapshots/consumers_circular.snap +202 -0
- data/spec/snapshots/consumers_complex_types-no-nest.snap +232 -0
- data/spec/snapshots/consumers_complex_types.snap +202 -0
- data/spec/snapshots/consumers_nested-no-nest.snap +232 -0
- data/spec/snapshots/consumers_nested.snap +202 -0
- data/spec/snapshots/namespace_folders.snap +202 -0
- data/spec/snapshots/namespace_map.snap +202 -0
- data/spec/snapshots/producers_with_key-no-nest.snap +232 -0
- data/spec/snapshots/producers_with_key.snap +202 -0
- data/spec/spec_helper.rb +25 -0
- metadata +6 -2
@@ -1086,6 +1086,208 @@ module Schemas
|
|
1086
1086
|
end
|
1087
1087
|
|
1088
1088
|
|
1089
|
+
spec/app/lib/schema_classes/my_schema_with_union_type.rb:
|
1090
|
+
# frozen_string_literal: true
|
1091
|
+
|
1092
|
+
# This file is autogenerated by Deimos, Do NOT modify
|
1093
|
+
module Schemas
|
1094
|
+
### Primary Schema Class ###
|
1095
|
+
# Autogenerated Schema for Record at com.my-namespace.MySchemaWithUnionType
|
1096
|
+
class MySchemaWithUnionType < Deimos::SchemaClass::Record
|
1097
|
+
|
1098
|
+
### Secondary Schema Classes ###
|
1099
|
+
# Autogenerated Schema for Record at com.flipp.content.Record1
|
1100
|
+
class Record1 < Deimos::SchemaClass::Record
|
1101
|
+
|
1102
|
+
### Attribute Accessors ###
|
1103
|
+
# @return [Hash<String, Integer>]
|
1104
|
+
attr_accessor :record1_map
|
1105
|
+
# @return [Integer]
|
1106
|
+
attr_accessor :record1_id
|
1107
|
+
|
1108
|
+
# @override
|
1109
|
+
def initialize(record1_map: {},
|
1110
|
+
record1_id: 0)
|
1111
|
+
super
|
1112
|
+
self.record1_map = record1_map
|
1113
|
+
self.record1_id = record1_id
|
1114
|
+
end
|
1115
|
+
|
1116
|
+
# @override
|
1117
|
+
def schema
|
1118
|
+
'Record1'
|
1119
|
+
end
|
1120
|
+
|
1121
|
+
# @override
|
1122
|
+
def namespace
|
1123
|
+
'com.flipp.content'
|
1124
|
+
end
|
1125
|
+
|
1126
|
+
# @override
|
1127
|
+
def as_json(_opts={})
|
1128
|
+
{
|
1129
|
+
'record1_map' => @record1_map,
|
1130
|
+
'record1_id' => @record1_id
|
1131
|
+
}
|
1132
|
+
end
|
1133
|
+
end
|
1134
|
+
|
1135
|
+
# Autogenerated Schema for Record at com.flipp.content.Record2
|
1136
|
+
class Record2 < Deimos::SchemaClass::Record
|
1137
|
+
|
1138
|
+
### Attribute Accessors ###
|
1139
|
+
# @return [String]
|
1140
|
+
attr_accessor :record2_id
|
1141
|
+
|
1142
|
+
# @override
|
1143
|
+
def initialize(record2_id: "")
|
1144
|
+
super
|
1145
|
+
self.record2_id = record2_id
|
1146
|
+
end
|
1147
|
+
|
1148
|
+
# @override
|
1149
|
+
def schema
|
1150
|
+
'Record2'
|
1151
|
+
end
|
1152
|
+
|
1153
|
+
# @override
|
1154
|
+
def namespace
|
1155
|
+
'com.flipp.content'
|
1156
|
+
end
|
1157
|
+
|
1158
|
+
# @override
|
1159
|
+
def as_json(_opts={})
|
1160
|
+
{
|
1161
|
+
'record2_id' => @record2_id
|
1162
|
+
}
|
1163
|
+
end
|
1164
|
+
end
|
1165
|
+
|
1166
|
+
# Autogenerated Schema for Record at com.flipp.content.Record3
|
1167
|
+
class Record3 < Deimos::SchemaClass::Record
|
1168
|
+
|
1169
|
+
### Attribute Accessors ###
|
1170
|
+
# @return [Float]
|
1171
|
+
attr_accessor :record3_id
|
1172
|
+
|
1173
|
+
# @override
|
1174
|
+
def initialize(record3_id: 0.0)
|
1175
|
+
super
|
1176
|
+
self.record3_id = record3_id
|
1177
|
+
end
|
1178
|
+
|
1179
|
+
# @override
|
1180
|
+
def schema
|
1181
|
+
'Record3'
|
1182
|
+
end
|
1183
|
+
|
1184
|
+
# @override
|
1185
|
+
def namespace
|
1186
|
+
'com.flipp.content'
|
1187
|
+
end
|
1188
|
+
|
1189
|
+
# @override
|
1190
|
+
def as_json(_opts={})
|
1191
|
+
{
|
1192
|
+
'record3_id' => @record3_id
|
1193
|
+
}
|
1194
|
+
end
|
1195
|
+
end
|
1196
|
+
|
1197
|
+
# Autogenerated Schema for Record at com.flipp.content.Record4
|
1198
|
+
class Record4 < Deimos::SchemaClass::Record
|
1199
|
+
|
1200
|
+
### Attribute Accessors ###
|
1201
|
+
# @return [Integer]
|
1202
|
+
attr_accessor :record4_id
|
1203
|
+
|
1204
|
+
# @override
|
1205
|
+
def initialize(record4_id: 0)
|
1206
|
+
super
|
1207
|
+
self.record4_id = record4_id
|
1208
|
+
end
|
1209
|
+
|
1210
|
+
# @override
|
1211
|
+
def schema
|
1212
|
+
'Record4'
|
1213
|
+
end
|
1214
|
+
|
1215
|
+
# @override
|
1216
|
+
def namespace
|
1217
|
+
'com.flipp.content'
|
1218
|
+
end
|
1219
|
+
|
1220
|
+
# @override
|
1221
|
+
def as_json(_opts={})
|
1222
|
+
{
|
1223
|
+
'record4_id' => @record4_id
|
1224
|
+
}
|
1225
|
+
end
|
1226
|
+
end
|
1227
|
+
|
1228
|
+
|
1229
|
+
### Attribute Readers ###
|
1230
|
+
# @return [nil, Record1, Record2, Record3, Record4, Integer, Array<String>]
|
1231
|
+
attr_reader :test_union_type
|
1232
|
+
|
1233
|
+
### Attribute Accessors ###
|
1234
|
+
# @return [String]
|
1235
|
+
attr_accessor :test_id
|
1236
|
+
# @return [nil, Integer]
|
1237
|
+
attr_accessor :test_long
|
1238
|
+
|
1239
|
+
### Attribute Writers ###
|
1240
|
+
# @return [nil, Record1, Record2, Record3, Record4, Integer, Array<String>]
|
1241
|
+
def test_union_type=(value)
|
1242
|
+
@test_union_type = initialize_test_union_type_type(value)
|
1243
|
+
end
|
1244
|
+
|
1245
|
+
# Helper method to determine which schema type to use for test_union_type
|
1246
|
+
# @param value [Hash, nil]
|
1247
|
+
# @return [Object, nil]
|
1248
|
+
def initialize_test_union_type_type(value)
|
1249
|
+
return nil if value.nil?
|
1250
|
+
|
1251
|
+
klass = [Record1, Record2, Record3, Record4].find do |candidate|
|
1252
|
+
fields = candidate.new.as_json.keys
|
1253
|
+
(value.keys - fields).empty?
|
1254
|
+
end
|
1255
|
+
|
1256
|
+
klass.initialize_from_value(value)
|
1257
|
+
end
|
1258
|
+
|
1259
|
+
# @override
|
1260
|
+
def initialize(test_id: "",
|
1261
|
+
test_long: nil,
|
1262
|
+
test_union_type: nil)
|
1263
|
+
super
|
1264
|
+
self.test_id = test_id
|
1265
|
+
self.test_long = test_long
|
1266
|
+
self.test_union_type = test_union_type
|
1267
|
+
end
|
1268
|
+
|
1269
|
+
# @override
|
1270
|
+
def schema
|
1271
|
+
'MySchemaWithUnionType'
|
1272
|
+
end
|
1273
|
+
|
1274
|
+
# @override
|
1275
|
+
def namespace
|
1276
|
+
'com.my-namespace'
|
1277
|
+
end
|
1278
|
+
|
1279
|
+
# @override
|
1280
|
+
def as_json(_opts={})
|
1281
|
+
{
|
1282
|
+
'test_id' => @test_id,
|
1283
|
+
'test_long' => @test_long,
|
1284
|
+
'test_union_type' => @test_union_type&.as_json
|
1285
|
+
}
|
1286
|
+
end
|
1287
|
+
end
|
1288
|
+
end
|
1289
|
+
|
1290
|
+
|
1089
1291
|
spec/app/lib/schema_classes/my_schema_with_unique_id.rb:
|
1090
1292
|
# frozen_string_literal: true
|
1091
1293
|
|
@@ -999,6 +999,77 @@ module Schemas
|
|
999
999
|
end
|
1000
1000
|
|
1001
1001
|
|
1002
|
+
spec/app/lib/schema_classes/my_schema_with_union_type.rb:
|
1003
|
+
# frozen_string_literal: true
|
1004
|
+
|
1005
|
+
# This file is autogenerated by Deimos, Do NOT modify
|
1006
|
+
module Schemas
|
1007
|
+
### Primary Schema Class ###
|
1008
|
+
# Autogenerated Schema for Record at com.my-namespace.MySchemaWithUnionType
|
1009
|
+
class MySchemaWithUnionType < Deimos::SchemaClass::Record
|
1010
|
+
|
1011
|
+
### Attribute Readers ###
|
1012
|
+
# @return [nil, Record1, Record2, Record3, Record4, Integer, Array<String>]
|
1013
|
+
attr_reader :test_union_type
|
1014
|
+
|
1015
|
+
### Attribute Accessors ###
|
1016
|
+
# @return [String]
|
1017
|
+
attr_accessor :test_id
|
1018
|
+
# @return [nil, Integer]
|
1019
|
+
attr_accessor :test_long
|
1020
|
+
|
1021
|
+
### Attribute Writers ###
|
1022
|
+
# @return [nil, Record1, Record2, Record3, Record4, Integer, Array<String>]
|
1023
|
+
def test_union_type=(value)
|
1024
|
+
@test_union_type = initialize_test_union_type_type(value)
|
1025
|
+
end
|
1026
|
+
|
1027
|
+
# Helper method to determine which schema type to use for test_union_type
|
1028
|
+
# @param value [Hash, nil]
|
1029
|
+
# @return [Object, nil]
|
1030
|
+
def initialize_test_union_type_type(value)
|
1031
|
+
return nil if value.nil?
|
1032
|
+
|
1033
|
+
klass = [Record1, Record2, Record3, Record4].find do |candidate|
|
1034
|
+
fields = candidate.new.as_json.keys
|
1035
|
+
(value.keys - fields).empty?
|
1036
|
+
end
|
1037
|
+
|
1038
|
+
klass.initialize_from_value(value)
|
1039
|
+
end
|
1040
|
+
|
1041
|
+
# @override
|
1042
|
+
def initialize(test_id: "",
|
1043
|
+
test_long: nil,
|
1044
|
+
test_union_type: nil)
|
1045
|
+
super
|
1046
|
+
self.test_id = test_id
|
1047
|
+
self.test_long = test_long
|
1048
|
+
self.test_union_type = test_union_type
|
1049
|
+
end
|
1050
|
+
|
1051
|
+
# @override
|
1052
|
+
def schema
|
1053
|
+
'MySchemaWithUnionType'
|
1054
|
+
end
|
1055
|
+
|
1056
|
+
# @override
|
1057
|
+
def namespace
|
1058
|
+
'com.my-namespace'
|
1059
|
+
end
|
1060
|
+
|
1061
|
+
# @override
|
1062
|
+
def as_json(_opts={})
|
1063
|
+
{
|
1064
|
+
'test_id' => @test_id,
|
1065
|
+
'test_long' => @test_long,
|
1066
|
+
'test_union_type' => @test_union_type&.as_json
|
1067
|
+
}
|
1068
|
+
end
|
1069
|
+
end
|
1070
|
+
end
|
1071
|
+
|
1072
|
+
|
1002
1073
|
spec/app/lib/schema_classes/my_schema_with_unique_id.rb:
|
1003
1074
|
# frozen_string_literal: true
|
1004
1075
|
|
@@ -1097,6 +1168,167 @@ module Schemas
|
|
1097
1168
|
end
|
1098
1169
|
|
1099
1170
|
|
1171
|
+
spec/app/lib/schema_classes/record1.rb:
|
1172
|
+
# frozen_string_literal: true
|
1173
|
+
|
1174
|
+
# This file is autogenerated by Deimos, Do NOT modify
|
1175
|
+
module Schemas
|
1176
|
+
### Primary Schema Class ###
|
1177
|
+
# Autogenerated Schema for Record at com.flipp.content.Record1
|
1178
|
+
class Record1 < Deimos::SchemaClass::Record
|
1179
|
+
|
1180
|
+
### Attribute Accessors ###
|
1181
|
+
# @return [Hash<String, Integer>]
|
1182
|
+
attr_accessor :record1_map
|
1183
|
+
# @return [Integer]
|
1184
|
+
attr_accessor :record1_id
|
1185
|
+
|
1186
|
+
# @override
|
1187
|
+
def initialize(record1_map: {},
|
1188
|
+
record1_id: 0)
|
1189
|
+
super
|
1190
|
+
self.record1_map = record1_map
|
1191
|
+
self.record1_id = record1_id
|
1192
|
+
end
|
1193
|
+
|
1194
|
+
# @override
|
1195
|
+
def schema
|
1196
|
+
'Record1'
|
1197
|
+
end
|
1198
|
+
|
1199
|
+
# @override
|
1200
|
+
def namespace
|
1201
|
+
'com.flipp.content'
|
1202
|
+
end
|
1203
|
+
|
1204
|
+
# @override
|
1205
|
+
def as_json(_opts={})
|
1206
|
+
{
|
1207
|
+
'record1_map' => @record1_map,
|
1208
|
+
'record1_id' => @record1_id
|
1209
|
+
}
|
1210
|
+
end
|
1211
|
+
end
|
1212
|
+
end
|
1213
|
+
|
1214
|
+
|
1215
|
+
spec/app/lib/schema_classes/record2.rb:
|
1216
|
+
# frozen_string_literal: true
|
1217
|
+
|
1218
|
+
# This file is autogenerated by Deimos, Do NOT modify
|
1219
|
+
module Schemas
|
1220
|
+
### Primary Schema Class ###
|
1221
|
+
# Autogenerated Schema for Record at com.flipp.content.Record2
|
1222
|
+
class Record2 < Deimos::SchemaClass::Record
|
1223
|
+
|
1224
|
+
### Attribute Accessors ###
|
1225
|
+
# @return [String]
|
1226
|
+
attr_accessor :record2_id
|
1227
|
+
|
1228
|
+
# @override
|
1229
|
+
def initialize(record2_id: "")
|
1230
|
+
super
|
1231
|
+
self.record2_id = record2_id
|
1232
|
+
end
|
1233
|
+
|
1234
|
+
# @override
|
1235
|
+
def schema
|
1236
|
+
'Record2'
|
1237
|
+
end
|
1238
|
+
|
1239
|
+
# @override
|
1240
|
+
def namespace
|
1241
|
+
'com.flipp.content'
|
1242
|
+
end
|
1243
|
+
|
1244
|
+
# @override
|
1245
|
+
def as_json(_opts={})
|
1246
|
+
{
|
1247
|
+
'record2_id' => @record2_id
|
1248
|
+
}
|
1249
|
+
end
|
1250
|
+
end
|
1251
|
+
end
|
1252
|
+
|
1253
|
+
|
1254
|
+
spec/app/lib/schema_classes/record3.rb:
|
1255
|
+
# frozen_string_literal: true
|
1256
|
+
|
1257
|
+
# This file is autogenerated by Deimos, Do NOT modify
|
1258
|
+
module Schemas
|
1259
|
+
### Primary Schema Class ###
|
1260
|
+
# Autogenerated Schema for Record at com.flipp.content.Record3
|
1261
|
+
class Record3 < Deimos::SchemaClass::Record
|
1262
|
+
|
1263
|
+
### Attribute Accessors ###
|
1264
|
+
# @return [Float]
|
1265
|
+
attr_accessor :record3_id
|
1266
|
+
|
1267
|
+
# @override
|
1268
|
+
def initialize(record3_id: 0.0)
|
1269
|
+
super
|
1270
|
+
self.record3_id = record3_id
|
1271
|
+
end
|
1272
|
+
|
1273
|
+
# @override
|
1274
|
+
def schema
|
1275
|
+
'Record3'
|
1276
|
+
end
|
1277
|
+
|
1278
|
+
# @override
|
1279
|
+
def namespace
|
1280
|
+
'com.flipp.content'
|
1281
|
+
end
|
1282
|
+
|
1283
|
+
# @override
|
1284
|
+
def as_json(_opts={})
|
1285
|
+
{
|
1286
|
+
'record3_id' => @record3_id
|
1287
|
+
}
|
1288
|
+
end
|
1289
|
+
end
|
1290
|
+
end
|
1291
|
+
|
1292
|
+
|
1293
|
+
spec/app/lib/schema_classes/record4.rb:
|
1294
|
+
# frozen_string_literal: true
|
1295
|
+
|
1296
|
+
# This file is autogenerated by Deimos, Do NOT modify
|
1297
|
+
module Schemas
|
1298
|
+
### Primary Schema Class ###
|
1299
|
+
# Autogenerated Schema for Record at com.flipp.content.Record4
|
1300
|
+
class Record4 < Deimos::SchemaClass::Record
|
1301
|
+
|
1302
|
+
### Attribute Accessors ###
|
1303
|
+
# @return [Integer]
|
1304
|
+
attr_accessor :record4_id
|
1305
|
+
|
1306
|
+
# @override
|
1307
|
+
def initialize(record4_id: 0)
|
1308
|
+
super
|
1309
|
+
self.record4_id = record4_id
|
1310
|
+
end
|
1311
|
+
|
1312
|
+
# @override
|
1313
|
+
def schema
|
1314
|
+
'Record4'
|
1315
|
+
end
|
1316
|
+
|
1317
|
+
# @override
|
1318
|
+
def namespace
|
1319
|
+
'com.flipp.content'
|
1320
|
+
end
|
1321
|
+
|
1322
|
+
# @override
|
1323
|
+
def as_json(_opts={})
|
1324
|
+
{
|
1325
|
+
'record4_id' => @record4_id
|
1326
|
+
}
|
1327
|
+
end
|
1328
|
+
end
|
1329
|
+
end
|
1330
|
+
|
1331
|
+
|
1100
1332
|
spec/app/lib/schema_classes/update_request.rb:
|
1101
1333
|
# frozen_string_literal: true
|
1102
1334
|
|
@@ -1059,6 +1059,208 @@ module Schemas
|
|
1059
1059
|
end
|
1060
1060
|
|
1061
1061
|
|
1062
|
+
spec/app/lib/schema_classes/my_schema_with_union_type.rb:
|
1063
|
+
# frozen_string_literal: true
|
1064
|
+
|
1065
|
+
# This file is autogenerated by Deimos, Do NOT modify
|
1066
|
+
module Schemas
|
1067
|
+
### Primary Schema Class ###
|
1068
|
+
# Autogenerated Schema for Record at com.my-namespace.MySchemaWithUnionType
|
1069
|
+
class MySchemaWithUnionType < Deimos::SchemaClass::Record
|
1070
|
+
|
1071
|
+
### Secondary Schema Classes ###
|
1072
|
+
# Autogenerated Schema for Record at com.flipp.content.Record1
|
1073
|
+
class Record1 < Deimos::SchemaClass::Record
|
1074
|
+
|
1075
|
+
### Attribute Accessors ###
|
1076
|
+
# @return [Hash<String, Integer>]
|
1077
|
+
attr_accessor :record1_map
|
1078
|
+
# @return [Integer]
|
1079
|
+
attr_accessor :record1_id
|
1080
|
+
|
1081
|
+
# @override
|
1082
|
+
def initialize(record1_map: {},
|
1083
|
+
record1_id: 0)
|
1084
|
+
super
|
1085
|
+
self.record1_map = record1_map
|
1086
|
+
self.record1_id = record1_id
|
1087
|
+
end
|
1088
|
+
|
1089
|
+
# @override
|
1090
|
+
def schema
|
1091
|
+
'Record1'
|
1092
|
+
end
|
1093
|
+
|
1094
|
+
# @override
|
1095
|
+
def namespace
|
1096
|
+
'com.flipp.content'
|
1097
|
+
end
|
1098
|
+
|
1099
|
+
# @override
|
1100
|
+
def as_json(_opts={})
|
1101
|
+
{
|
1102
|
+
'record1_map' => @record1_map,
|
1103
|
+
'record1_id' => @record1_id
|
1104
|
+
}
|
1105
|
+
end
|
1106
|
+
end
|
1107
|
+
|
1108
|
+
# Autogenerated Schema for Record at com.flipp.content.Record2
|
1109
|
+
class Record2 < Deimos::SchemaClass::Record
|
1110
|
+
|
1111
|
+
### Attribute Accessors ###
|
1112
|
+
# @return [String]
|
1113
|
+
attr_accessor :record2_id
|
1114
|
+
|
1115
|
+
# @override
|
1116
|
+
def initialize(record2_id: "")
|
1117
|
+
super
|
1118
|
+
self.record2_id = record2_id
|
1119
|
+
end
|
1120
|
+
|
1121
|
+
# @override
|
1122
|
+
def schema
|
1123
|
+
'Record2'
|
1124
|
+
end
|
1125
|
+
|
1126
|
+
# @override
|
1127
|
+
def namespace
|
1128
|
+
'com.flipp.content'
|
1129
|
+
end
|
1130
|
+
|
1131
|
+
# @override
|
1132
|
+
def as_json(_opts={})
|
1133
|
+
{
|
1134
|
+
'record2_id' => @record2_id
|
1135
|
+
}
|
1136
|
+
end
|
1137
|
+
end
|
1138
|
+
|
1139
|
+
# Autogenerated Schema for Record at com.flipp.content.Record3
|
1140
|
+
class Record3 < Deimos::SchemaClass::Record
|
1141
|
+
|
1142
|
+
### Attribute Accessors ###
|
1143
|
+
# @return [Float]
|
1144
|
+
attr_accessor :record3_id
|
1145
|
+
|
1146
|
+
# @override
|
1147
|
+
def initialize(record3_id: 0.0)
|
1148
|
+
super
|
1149
|
+
self.record3_id = record3_id
|
1150
|
+
end
|
1151
|
+
|
1152
|
+
# @override
|
1153
|
+
def schema
|
1154
|
+
'Record3'
|
1155
|
+
end
|
1156
|
+
|
1157
|
+
# @override
|
1158
|
+
def namespace
|
1159
|
+
'com.flipp.content'
|
1160
|
+
end
|
1161
|
+
|
1162
|
+
# @override
|
1163
|
+
def as_json(_opts={})
|
1164
|
+
{
|
1165
|
+
'record3_id' => @record3_id
|
1166
|
+
}
|
1167
|
+
end
|
1168
|
+
end
|
1169
|
+
|
1170
|
+
# Autogenerated Schema for Record at com.flipp.content.Record4
|
1171
|
+
class Record4 < Deimos::SchemaClass::Record
|
1172
|
+
|
1173
|
+
### Attribute Accessors ###
|
1174
|
+
# @return [Integer]
|
1175
|
+
attr_accessor :record4_id
|
1176
|
+
|
1177
|
+
# @override
|
1178
|
+
def initialize(record4_id: 0)
|
1179
|
+
super
|
1180
|
+
self.record4_id = record4_id
|
1181
|
+
end
|
1182
|
+
|
1183
|
+
# @override
|
1184
|
+
def schema
|
1185
|
+
'Record4'
|
1186
|
+
end
|
1187
|
+
|
1188
|
+
# @override
|
1189
|
+
def namespace
|
1190
|
+
'com.flipp.content'
|
1191
|
+
end
|
1192
|
+
|
1193
|
+
# @override
|
1194
|
+
def as_json(_opts={})
|
1195
|
+
{
|
1196
|
+
'record4_id' => @record4_id
|
1197
|
+
}
|
1198
|
+
end
|
1199
|
+
end
|
1200
|
+
|
1201
|
+
|
1202
|
+
### Attribute Readers ###
|
1203
|
+
# @return [nil, Record1, Record2, Record3, Record4, Integer, Array<String>]
|
1204
|
+
attr_reader :test_union_type
|
1205
|
+
|
1206
|
+
### Attribute Accessors ###
|
1207
|
+
# @return [String]
|
1208
|
+
attr_accessor :test_id
|
1209
|
+
# @return [nil, Integer]
|
1210
|
+
attr_accessor :test_long
|
1211
|
+
|
1212
|
+
### Attribute Writers ###
|
1213
|
+
# @return [nil, Record1, Record2, Record3, Record4, Integer, Array<String>]
|
1214
|
+
def test_union_type=(value)
|
1215
|
+
@test_union_type = initialize_test_union_type_type(value)
|
1216
|
+
end
|
1217
|
+
|
1218
|
+
# Helper method to determine which schema type to use for test_union_type
|
1219
|
+
# @param value [Hash, nil]
|
1220
|
+
# @return [Object, nil]
|
1221
|
+
def initialize_test_union_type_type(value)
|
1222
|
+
return nil if value.nil?
|
1223
|
+
|
1224
|
+
klass = [Record1, Record2, Record3, Record4].find do |candidate|
|
1225
|
+
fields = candidate.new.as_json.keys
|
1226
|
+
(value.keys - fields).empty?
|
1227
|
+
end
|
1228
|
+
|
1229
|
+
klass.initialize_from_value(value)
|
1230
|
+
end
|
1231
|
+
|
1232
|
+
# @override
|
1233
|
+
def initialize(test_id: "",
|
1234
|
+
test_long: nil,
|
1235
|
+
test_union_type: nil)
|
1236
|
+
super
|
1237
|
+
self.test_id = test_id
|
1238
|
+
self.test_long = test_long
|
1239
|
+
self.test_union_type = test_union_type
|
1240
|
+
end
|
1241
|
+
|
1242
|
+
# @override
|
1243
|
+
def schema
|
1244
|
+
'MySchemaWithUnionType'
|
1245
|
+
end
|
1246
|
+
|
1247
|
+
# @override
|
1248
|
+
def namespace
|
1249
|
+
'com.my-namespace'
|
1250
|
+
end
|
1251
|
+
|
1252
|
+
# @override
|
1253
|
+
def as_json(_opts={})
|
1254
|
+
{
|
1255
|
+
'test_id' => @test_id,
|
1256
|
+
'test_long' => @test_long,
|
1257
|
+
'test_union_type' => @test_union_type&.as_json
|
1258
|
+
}
|
1259
|
+
end
|
1260
|
+
end
|
1261
|
+
end
|
1262
|
+
|
1263
|
+
|
1062
1264
|
spec/app/lib/schema_classes/my_schema_with_unique_id.rb:
|
1063
1265
|
# frozen_string_literal: true
|
1064
1266
|
|