@@ -5,6 +5,7 @@ enum QueryValue: Codable {
5
5
case int(Int)
6
6
case double(Double)
7
7
case bool(Bool)
8
+ case query(Query)
8
9
9
10
init(from decoder: Decoder) throws {
10
11
let container = try decoder.singleValueContainer()
@@ -17,6 +18,8 @@ enum QueryValue: Codable {
17
18
self = .double(doubleValue)
18
19
} else if let boolValue = try? container.decode(Bool.self) {
19
20
self = .bool(boolValue)
21
+ } else if let queryValue = try? container.decode(Query.self) {
22
+ self = .query(queryValue)
20
23
} else {
21
24
throw DecodingError.dataCorruptedError(in: container, debugDescription: "QueryValue cannot be decoded")
22
25
}
@@ -33,6 +36,8 @@ enum QueryValue: Codable {
33
36
try container.encode(value)
34
37
case .bool(let value):
35
38
try container.encode(value)
39
+ case .query(let value):
40
+ try container.encode(value)
36
41
}
37
42
}
38
43
}
@@ -68,6 +73,8 @@ public struct Query : Codable, CustomStringConvertible {
68
73
return doubleArray.map { .double($0) }
69
74
case let boolArray as [Bool]:
70
75
return boolArray.map { .bool($0) }
76
+ case let queryArray as [Query]:
77
+ return queryArray.map { .query($0) }
71
78
case let stringValue as String:
72
79
return [.string(stringValue)]
73
80
case let intValue as Int:
@@ -76,6 +83,8 @@ public struct Query : Codable, CustomStringConvertible {
76
83
return [.double(doubleValue)]
77
84
case let boolValue as Bool:
78
85
return [.bool(boolValue)]
86
+ case let queryValue as Query:
87
+ return [.query(queryValue)]
79
88
default:
80
89
return nil
81
90
}
0 commit comments