LocalData/Sources/LocalData/Models/StorageKey.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)
}
}