Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 10 additions & 2 deletions Package.swift
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ let swiftSettings: [PackageDescription.SwiftSetting] = [
.enableUpcomingFeature("InternalImportsByDefault"),
.enableUpcomingFeature("MemberImportVisibility"),
.enableUpcomingFeature("InferIsolatedConformances"),
.enableUpcomingFeature("NonisolatedNonsendingByDefault"),
.enableUpcomingFeature("ImmutableWeakCaptures"),
]

Expand All @@ -38,19 +39,26 @@ let package = Package(
dependencies: [
.package(url: "https://github.com/mochidev/AsyncSequenceReader.git", .upToNextMinor(from: "0.5.0")),
.package(url: "https://github.com/mochidev/Bytes.git", .upToNextMinor(from: "0.6.2")),
.package(url: "https://github.com/mochidev/swift-questionable-concurrency", .upToNextMinor(from: "0.2.2")),
],
targets: [
.target(
name: "CodableDatastore",
dependencies: [
"AsyncSequenceReader",
"Bytes"
"Bytes",
.product(name: "QuestionableConcurrency", package: "swift-questionable-concurrency")
],
swiftSettings: swiftSettings
),
.testTarget(
name: "CodableDatastoreTests",
dependencies: ["CodableDatastore"],
dependencies: [
"AsyncSequenceReader",
"CodableDatastore",
"Bytes",
.product(name: "QuestionableConcurrency", package: "swift-questionable-concurrency")
],
swiftSettings: swiftSettings
),
]
Expand Down
10 changes: 5 additions & 5 deletions Sources/CodableDatastore/Datastore/Datastore.swift
Original file line number Diff line number Diff line change
Expand Up @@ -125,7 +125,7 @@ extension Datastore {
return descriptor
}

func decoder(for version: Version) throws -> @Sendable (_ data: Data) async throws -> (id: IdentifierType, instance: InstanceType) {
nonisolated func decoder(for version: Version) throws -> @Sendable (_ data: Data) async throws -> (id: IdentifierType, instance: InstanceType) {
guard let decoder = decoders[version] else {
throw DatastoreError.missingDecoder(version: String(describing: version))
}
Expand Down Expand Up @@ -533,7 +533,7 @@ extension Datastore {
datastoreKey: self.key
) { versionData, instanceData in
let entryVersion = try Version(versionData)
let decoder = try await self.decoder(for: entryVersion)
let decoder = try self.decoder(for: entryVersion)
let decodedValue = try await decoder(instanceData)

try await provider.yield(decodedValue)
Expand Down Expand Up @@ -676,7 +676,7 @@ extension Datastore {
datastoreKey: self.key
) { versionData, instanceData in
let entryVersion = try Version(versionData)
let decoder = try await self.decoder(for: entryVersion)
let decoder = try self.decoder(for: entryVersion)
let instance = try await decoder(instanceData).instance

try await provider.yield(instance)
Expand All @@ -690,7 +690,7 @@ extension Datastore {
let persistedEntry = try await transaction.primaryIndexCursor(for: identifier, datastoreKey: self.key)

let entryVersion = try Version(persistedEntry.versionData)
let decoder = try await self.decoder(for: entryVersion)
let decoder = try self.decoder(for: entryVersion)
let instance = try await decoder(persistedEntry.instanceData).instance

try await provider.yield(instance)
Expand Down Expand Up @@ -953,7 +953,7 @@ extension Datastore {
}.compactMap { event in
try? await event.mapEntries { entry in
let version = try Version(entry.versionData)
let decoder = try await self.decoder(for: version)
let decoder = try self.decoder(for: version)
let instance = try await decoder(entry.instanceData).instance
return instance
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,6 @@ extension DiskPersistence {

var cachedRootObject: DatastoreRootManifest?

var lastUpdateDescriptorTask: Task<any Sendable, any Error>?

/// The root objects that are being tracked in memory.
var trackedRootObjects: [RootObject.ID : WeakValue<RootObject>] = [:]
var trackedIndexes: [Index.ID : WeakValue<Index>] = [:]
Expand Down
Loading
Loading