// // Copyright Amazon.com Inc. or its affiliates. // All Rights Reserved. // // SPDX-License-Identifier: Apache-2.0 // import Foundation extension ModelSchema { func lazyReferenceIdentifiers(from modelObject: [String: JSONValue]) throws -> [LazyReferenceIdentifier] { enum ExtractionError: Error { case unsupportedLazyReferenceIdentifier(name: String, value: JSONValue?) } var identifiers = [LazyReferenceIdentifier]() for identifierField in primaryKey.fields { let object = modelObject[identifierField.name] switch object { case .string(let identifierValue): identifiers.append(.init(name: identifierField.name, value: identifierValue)) default: throw ExtractionError.unsupportedLazyReferenceIdentifier( name: identifierField.name, value: object ) } } return identifiers } }