Refactoring
This commit is contained in:
parent
5566f6f6ba
commit
5bbb722b20
26 changed files with 1083 additions and 756 deletions
56
Sources/DataRaft/Protocols/ConnectionServiceProtocol.swift
Normal file
56
Sources/DataRaft/Protocols/ConnectionServiceProtocol.swift
Normal file
|
|
@ -0,0 +1,56 @@
|
|||
import Foundation
|
||||
import DataLiteCore
|
||||
|
||||
/// A type that manages the lifecycle of a database connection.
|
||||
///
|
||||
/// ## Overview
|
||||
///
|
||||
/// Conforming types implement the mechanisms required to open, configure, reconnect, and safelyuse
|
||||
/// a database connection across multiple threads or tasks. This abstraction allows higher-level
|
||||
/// services to execute operations without dealing with low-level connection handling.
|
||||
///
|
||||
/// ## Topics
|
||||
///
|
||||
/// ### Key Management
|
||||
///
|
||||
/// - ``ConnectionServiceKeyProvider``
|
||||
/// - ``keyProvider``
|
||||
///
|
||||
/// ### Connection Lifecycle
|
||||
///
|
||||
/// - ``setNeedsReconnect()``
|
||||
///
|
||||
/// ### Performing Operations
|
||||
///
|
||||
/// - ``Perform``
|
||||
/// - ``perform(_:)``
|
||||
public protocol ConnectionServiceProtocol: AnyObject, Sendable {
|
||||
/// A closure type that performs an operation using an active database connection.
|
||||
///
|
||||
/// - Parameter connection: The active database connection used for the operation.
|
||||
/// - Returns: The result produced by the closure.
|
||||
/// - Throws: Any error thrown by the closure or connection layer.
|
||||
typealias Perform<T> = (ConnectionProtocol) throws -> T
|
||||
|
||||
/// The provider responsible for supplying encryption keys to the service.
|
||||
var keyProvider: ConnectionServiceKeyProvider? { get set }
|
||||
|
||||
/// Marks the service as requiring reconnection before the next operation.
|
||||
///
|
||||
/// The reconnection behavior depends on the key provider’s implementation of
|
||||
/// ``ConnectionServiceKeyProvider/connectionService(shouldReconnect:)``.
|
||||
///
|
||||
/// - Returns: `true` if the reconnection flag was set; otherwise, `false`.
|
||||
@discardableResult
|
||||
func setNeedsReconnect() -> Bool
|
||||
|
||||
/// Executes a closure within the context of an active database connection.
|
||||
///
|
||||
/// Implementations ensure that a valid connection is available before executing the operation.
|
||||
/// If the connection is not available or fails, this method throws an error.
|
||||
///
|
||||
/// - Parameter closure: The operation to perform using the connection.
|
||||
/// - Returns: The result produced by the closure.
|
||||
/// - Throws: Any error thrown by the closure or the underlying connection.
|
||||
func perform<T>(_ closure: Perform<T>) throws -> T
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue