LocalData/Sources/LocalData/Models/StorageKeyDescriptor.swift

54 lines
1.5 KiB
Swift

import Foundation
public struct StorageKeyDescriptor: Sendable {
public let name: String
public let domain: StorageDomain
public let security: SecurityPolicy
public let serializer: String
public let valueType: String
public let owner: String
public let availability: PlatformAvailability
public let syncPolicy: SyncPolicy
public let notes: String?
public init(
name: String,
domain: StorageDomain,
security: SecurityPolicy,
serializer: String,
valueType: String,
owner: String,
availability: PlatformAvailability,
syncPolicy: SyncPolicy,
notes: String? = nil
) {
self.name = name
self.domain = domain
self.security = security
self.serializer = serializer
self.valueType = valueType
self.owner = owner
self.availability = availability
self.syncPolicy = syncPolicy
self.notes = notes
}
public static func from<Key: StorageKey>(
_ key: Key,
serializer: String,
notes: String? = nil
) -> StorageKeyDescriptor {
StorageKeyDescriptor(
name: key.name,
domain: key.domain,
security: key.security,
serializer: serializer,
valueType: String(describing: Key.Value.self),
owner: key.owner,
availability: key.availability,
syncPolicy: key.syncPolicy,
notes: notes
)
}
}