Refactoring
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
import Foundation
|
||||
import DataLiteCore
|
||||
|
||||
/// A type that provides encryption keys to a database connection service.
|
||||
///
|
||||
/// ## Overview
|
||||
///
|
||||
/// This type manages how encryption keys are obtained and applied when establishing or restoring a
|
||||
/// connection. Implementations can use static, dynamic, hardware-backed, or biometric key sources.
|
||||
///
|
||||
/// - The service requests a key when establishing or restoring a connection.
|
||||
/// - If decryption fails, the service may ask whether it should attempt to reconnect.
|
||||
/// - If applying a key fails (for example, the key is invalid or ``connectionService(keyFor:)``
|
||||
/// throws), the error is reported through ``connectionService(_:didReceive:)``.
|
||||
///
|
||||
/// - Important: The provider does not receive general database errors.
|
||||
///
|
||||
/// ## Topics
|
||||
///
|
||||
/// ### Providing Keys and Handling Errors
|
||||
///
|
||||
/// - ``connectionService(keyFor:)``
|
||||
/// - ``connectionService(shouldReconnect:)``
|
||||
/// - ``connectionService(_:didReceive:)``
|
||||
public protocol ConnectionServiceKeyProvider: AnyObject, Sendable {
|
||||
/// Returns the encryption key for the specified database service.
|
||||
///
|
||||
/// - Parameter service: The service requesting the key.
|
||||
/// - Returns: The encryption key.
|
||||
/// - Throws: An error if the key cannot be retrieved.
|
||||
func connectionService(keyFor service: ConnectionServiceProtocol) throws -> Connection.Key
|
||||
|
||||
/// Indicates whether the service should attempt to reconnect if applying the key fails.
|
||||
///
|
||||
/// - Parameter service: The database service.
|
||||
/// - Returns: `true` to attempt reconnection. Defaults to `false`.
|
||||
func connectionService(shouldReconnect service: ConnectionServiceProtocol) -> Bool
|
||||
|
||||
/// Notifies the provider of an error that occurred during key retrieval or application.
|
||||
///
|
||||
/// - Parameters:
|
||||
/// - service: The database service reporting the error.
|
||||
/// - error: The error encountered during key retrieval or application.
|
||||
func connectionService(_ service: ConnectionServiceProtocol, didReceive error: Error)
|
||||
}
|
||||
Reference in New Issue
Block a user