41 lines
1.3 KiB
Swift
41 lines
1.3 KiB
Swift
import Foundation
|
|
|
|
public struct StorageKey<Value: Codable & Sendable>: Sendable, CustomStringConvertible {
|
|
public let name: String
|
|
public let domain: StorageDomain
|
|
public let security: SecurityPolicy
|
|
public let serializer: Serializer<Value>
|
|
public let owner: String
|
|
public let description: String
|
|
public let availability: PlatformAvailability
|
|
public let syncPolicy: SyncPolicy
|
|
|
|
private let migrationBuilder: (@Sendable (StorageKey<Value>) -> AnyStorageMigration?)?
|
|
|
|
public init(
|
|
name: String,
|
|
domain: StorageDomain,
|
|
security: SecurityPolicy = .recommended,
|
|
serializer: Serializer<Value> = .json,
|
|
owner: String,
|
|
description: String,
|
|
availability: PlatformAvailability = .all,
|
|
syncPolicy: SyncPolicy = .never,
|
|
migration: (@Sendable (StorageKey<Value>) -> AnyStorageMigration?)? = nil
|
|
) {
|
|
self.name = name
|
|
self.domain = domain
|
|
self.security = security
|
|
self.serializer = serializer
|
|
self.owner = owner
|
|
self.description = description
|
|
self.availability = availability
|
|
self.syncPolicy = syncPolicy
|
|
self.migrationBuilder = migration
|
|
}
|
|
|
|
public var migration: AnyStorageMigration? {
|
|
migrationBuilder?(self)
|
|
}
|
|
}
|