From 55ef2eadde3194b828c7ee8694bb3d23cc1ca145 Mon Sep 17 00:00:00 2001 From: Dimitri Bouniol Date: Mon, 7 Sep 2026 05:03:02 -0700 Subject: [PATCH] Added debug descriptions for all identifiers --- .../Disk Persistence/Datastore/DatastoreIndex.swift | 4 ++++ .../Disk Persistence/Datastore/DatastoreIndexManifest.swift | 4 ++++ .../Disk Persistence/Datastore/DatastorePage.swift | 4 ++++ .../Disk Persistence/Datastore/DatastoreRoot.swift | 4 ++++ .../Disk Persistence/Datastore/PersistenceDatastore.swift | 4 ++++ .../Persistence/Disk Persistence/Snapshot/Snapshot.swift | 4 ++++ .../Disk Persistence/Snapshot/SnapshotIteration.swift | 4 ++++ .../Persistence/Disk Persistence/TypedIdentifier.swift | 3 ++- 8 files changed, 30 insertions(+), 1 deletion(-) diff --git a/Sources/CodableDatastore/Persistence/Disk Persistence/Datastore/DatastoreIndex.swift b/Sources/CodableDatastore/Persistence/Disk Persistence/Datastore/DatastoreIndex.swift index 4dd5bb0..7ff575e 100644 --- a/Sources/CodableDatastore/Persistence/Disk Persistence/Datastore/DatastoreIndex.swift +++ b/Sources/CodableDatastore/Persistence/Disk Persistence/Datastore/DatastoreIndex.swift @@ -16,6 +16,10 @@ import Bytes typealias DatastoreIndexIdentifier = TypedIdentifier.Datastore.Index> +@DebugDescription extension DatastoreIndexIdentifier { + var debugDescription: String { "DatastoreIndexIdentifier(\(rawValue))" } +} + extension DiskPersistence.Datastore { actor Index: Identifiable { let datastore: DiskPersistence.Datastore diff --git a/Sources/CodableDatastore/Persistence/Disk Persistence/Datastore/DatastoreIndexManifest.swift b/Sources/CodableDatastore/Persistence/Disk Persistence/Datastore/DatastoreIndexManifest.swift index ffddbd4..ef4ba69 100644 --- a/Sources/CodableDatastore/Persistence/Disk Persistence/Datastore/DatastoreIndexManifest.swift +++ b/Sources/CodableDatastore/Persistence/Disk Persistence/Datastore/DatastoreIndexManifest.swift @@ -13,6 +13,10 @@ import Foundation typealias DatastoreIndexManifestIdentifier = DatedIdentifier +@DebugDescription extension DatastoreIndexManifestIdentifier { + var debugDescription: String { "DatastoreIndexManifestIdentifier(\(rawValue))" } +} + struct DatastoreIndexManifest: Equatable, Identifiable { /// The identifier for this manifest. var id: DatastoreIndexManifestIdentifier diff --git a/Sources/CodableDatastore/Persistence/Disk Persistence/Datastore/DatastorePage.swift b/Sources/CodableDatastore/Persistence/Disk Persistence/Datastore/DatastorePage.swift index f1bf280..94a4e3f 100644 --- a/Sources/CodableDatastore/Persistence/Disk Persistence/Datastore/DatastorePage.swift +++ b/Sources/CodableDatastore/Persistence/Disk Persistence/Datastore/DatastorePage.swift @@ -13,6 +13,10 @@ import Foundation typealias DatastorePageIdentifier = DatedIdentifier.Datastore.Page> +@DebugDescription extension DatastorePageIdentifier { + var debugDescription: String { "DatastorePageIdentifier(\(rawValue))" } +} + extension DiskPersistence.Datastore { actor Page: Identifiable { let datastore: DiskPersistence.Datastore diff --git a/Sources/CodableDatastore/Persistence/Disk Persistence/Datastore/DatastoreRoot.swift b/Sources/CodableDatastore/Persistence/Disk Persistence/Datastore/DatastoreRoot.swift index 4eea341..2fc8d51 100644 --- a/Sources/CodableDatastore/Persistence/Disk Persistence/Datastore/DatastoreRoot.swift +++ b/Sources/CodableDatastore/Persistence/Disk Persistence/Datastore/DatastoreRoot.swift @@ -11,6 +11,10 @@ import Foundation typealias DatastoreRootIdentifier = DatedIdentifier.Datastore.RootObject> +@DebugDescription extension DatastoreRootIdentifier { + var debugDescription: String { "DatastoreRootIdentifier(\(rawValue))" } +} + /// A reference to a particular root within a datastore. /// /// Prior to version 0.4 (2024-10-11), only the root ID was stored in the snapshot iteration manifest's root file, which meant one would need to guess which datastore it belonged to. This type thus tries to decode both a single ``DatastoreRootIdentifier`` and a pair of ``DatastoreIdentifier`` and ``DatastoreRootIdentifier``s. diff --git a/Sources/CodableDatastore/Persistence/Disk Persistence/Datastore/PersistenceDatastore.swift b/Sources/CodableDatastore/Persistence/Disk Persistence/Datastore/PersistenceDatastore.swift index d3030d3..a7c9c0d 100644 --- a/Sources/CodableDatastore/Persistence/Disk Persistence/Datastore/PersistenceDatastore.swift +++ b/Sources/CodableDatastore/Persistence/Disk Persistence/Datastore/PersistenceDatastore.swift @@ -11,6 +11,10 @@ import Foundation typealias DatastoreIdentifier = TypedIdentifier.Datastore> +@DebugDescription extension DatastoreIdentifier { + var debugDescription: String { "DatastoreIdentifier(\(rawValue))" } +} + struct WeakValue { weak var value: T? diff --git a/Sources/CodableDatastore/Persistence/Disk Persistence/Snapshot/Snapshot.swift b/Sources/CodableDatastore/Persistence/Disk Persistence/Snapshot/Snapshot.swift index eaaa3d3..c904ce9 100644 --- a/Sources/CodableDatastore/Persistence/Disk Persistence/Snapshot/Snapshot.swift +++ b/Sources/CodableDatastore/Persistence/Disk Persistence/Snapshot/Snapshot.swift @@ -12,6 +12,10 @@ import QuestionableConcurrency typealias SnapshotIdentifier = DatedIdentifier> +@DebugDescription extension SnapshotIdentifier { + var debugDescription: String { "SnapshotIdentifier(\(rawValue))" } +} + /// A type that manages access to a snapshot on disk. actor Snapshot { /// The identifier of the snapshot. diff --git a/Sources/CodableDatastore/Persistence/Disk Persistence/Snapshot/SnapshotIteration.swift b/Sources/CodableDatastore/Persistence/Disk Persistence/Snapshot/SnapshotIteration.swift index e40e32b..9e94b41 100644 --- a/Sources/CodableDatastore/Persistence/Disk Persistence/Snapshot/SnapshotIteration.swift +++ b/Sources/CodableDatastore/Persistence/Disk Persistence/Snapshot/SnapshotIteration.swift @@ -11,6 +11,10 @@ import Foundation typealias SnapshotIterationIdentifier = DatedIdentifier +@DebugDescription extension SnapshotIterationIdentifier { + var debugDescription: String { "SnapshotIterationIdentifier(\(rawValue))" } +} + /// Versions supported by ``DiskPersisitence``. /// /// These are used when dealing with format changes at the library level. diff --git a/Sources/CodableDatastore/Persistence/Disk Persistence/TypedIdentifier.swift b/Sources/CodableDatastore/Persistence/Disk Persistence/TypedIdentifier.swift index 832a2d1..e1ba2d3 100644 --- a/Sources/CodableDatastore/Persistence/Disk Persistence/TypedIdentifier.swift +++ b/Sources/CodableDatastore/Persistence/Disk Persistence/TypedIdentifier.swift @@ -17,7 +17,7 @@ struct TypedIdentifier: TypedIdentifierProtocol { } } -protocol TypedIdentifierProtocol: RawRepresentable, Codable, Equatable, Hashable, CustomStringConvertible, Comparable, Sendable { +protocol TypedIdentifierProtocol: RawRepresentable, Codable, Equatable, Hashable, CustomStringConvertible, CustomDebugStringConvertible, Comparable, Sendable { var rawValue: String { get } init(rawValue: String) } @@ -34,6 +34,7 @@ extension TypedIdentifierProtocol { } var description: String { rawValue } + var debugDescription: String { "\(Self.self)(\(rawValue))" } } extension TypedIdentifierProtocol {