diff --git a/Sources/ElasticsearchNIOClient/ElasticsearchClient+ValidationError.swift b/Sources/ElasticsearchNIOClient/ElasticsearchClient+ValidationError.swift index 2150b75..061e173 100644 --- a/Sources/ElasticsearchNIOClient/ElasticsearchClient+ValidationError.swift +++ b/Sources/ElasticsearchNIOClient/ElasticsearchClient+ValidationError.swift @@ -1,7 +1,7 @@ import Foundation extension ElasticsearchClient { - public struct ValidationError: LocalizedError, Equatable { + public struct ValidationError: LocalizedError { public static let invalidURLString = ValidationError(.invalidURLString) public static let missingURLScheme = ValidationError(.missingURLScheme) public static let invalidURLScheme = ValidationError(.invalidURLScheme) @@ -12,28 +12,32 @@ extension ElasticsearchClient { private let kind: Kind private init(_ kind: Kind) { self.kind = kind } + } +} + +extension ElasticsearchClient.ValidationError: Equatable { + public static func ==(lhs: ElasticsearchClient.ValidationError, rhs: ElasticsearchClient.ValidationError) -> Bool { + return lhs.kind == rhs.kind + } +} + +extension ElasticsearchClient.ValidationError { + private enum Kind: LocalizedError { + case invalidURLString + case missingURLScheme + case invalidURLScheme + case missingURLHost - public static func ==(lhs: ValidationError, rhs: ValidationError) -> Bool { - return lhs.kind == rhs.kind - } - - private enum Kind: LocalizedError { - case invalidURLString - case missingURLScheme - case invalidURLScheme - case missingURLHost - - var localizedDescription: String { - let message: String = { - switch self { - case .invalidURLString: return "invalid URL string" - case .missingURLScheme: return "URL scheme is missing" - case .invalidURLScheme: return "invalid URL scheme, expected 'http' or 'https'" - case .missingURLHost: return "missing remote hostname" - } - }() - return "Elasticsearch connection configuration validation failed: \(message)" - } + var localizedDescription: String { + let message: String = { + switch self { + case .invalidURLString: return "invalid URL string" + case .missingURLScheme: return "URL scheme is missing" + case .invalidURLScheme: return "invalid URL scheme, expected 'http' or 'https'" + case .missingURLHost: return "missing remote hostname" + } + }() + return "Elasticsearch connection configuration validation failed: \(message)" } } } diff --git a/Sources/ElasticsearchNIOClient/Models/ESMultipleDocumentResponse.swift b/Sources/ElasticsearchNIOClient/Models/ESMultipleDocumentResponse.swift index dad9247..4df1344 100644 --- a/Sources/ElasticsearchNIOClient/Models/ESMultipleDocumentResponse.swift +++ b/Sources/ElasticsearchNIOClient/Models/ESMultipleDocumentResponse.swift @@ -1,19 +1,25 @@ import Foundation public struct ESGetMultipleDocumentsResponse: Decodable { - public struct Hits: Decodable { - public struct Total: Decodable { - public let value: Int - public let relation: Relation - - public enum Relation: String, Decodable { - case eq, gte - } - } + public let hits: Hits +} +extension ESGetMultipleDocumentsResponse { + public struct Hits: Decodable { public let total: Total? public let hits: [ESGetSingleDocumentResponse] } +} - public let hits: Hits +extension ESGetMultipleDocumentsResponse.Hits { + public struct Total: Decodable { + public let value: Int + public let relation: Relation + } +} + +extension ESGetMultipleDocumentsResponse.Hits.Total { + public enum Relation: String, Decodable { + case eq, gte + } }