Skip to content

Commit 41946c7

Browse files
Added placeholder types for datastore indexes and pages
1 parent ce11c4c commit 41946c7

File tree

4 files changed

+76
-4
lines changed

4 files changed

+76
-4
lines changed
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
//
2+
// DatastoreIndex.swift
3+
// CodableDatastore
4+
//
5+
// Created by Dimitri Bouniol on 2023-06-23.
6+
// Copyright © 2023 Mochi Development, Inc. All rights reserved.
7+
//
8+
9+
import Foundation
10+
11+
typealias DatastoreIndexIdentifier = TypedIdentifier<DiskPersistence<ReadOnly>.Datastore.Index>
12+
typealias DatastoreIndexManifestIdentifier = DatedIdentifier<DiskPersistence<ReadOnly>.Datastore.Index>
13+
14+
enum DatastoreIndexRootIdentifier: Hashable {
15+
case primary(manifest: DatastoreIndexManifestIdentifier)
16+
case direct(index: DatastoreIndexIdentifier, manifest: DatastoreIndexManifestIdentifier)
17+
case secondary(index: DatastoreIndexIdentifier, manifest: DatastoreIndexManifestIdentifier)
18+
}
19+
20+
extension DiskPersistence.Datastore {
21+
actor Index: Identifiable {
22+
unowned let datastore: DiskPersistence<AccessMode>.Datastore
23+
24+
let id: DatastoreIndexRootIdentifier
25+
26+
init(
27+
datastore: DiskPersistence<AccessMode>.Datastore,
28+
id: DatastoreIndexRootIdentifier
29+
) {
30+
self.datastore = datastore
31+
self.id = id
32+
}
33+
}
34+
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
//
2+
// DatastorePage.swift
3+
// CodableDatastore
4+
//
5+
// Created by Dimitri Bouniol on 2023-06-23.
6+
// Copyright © 2023 Mochi Development, Inc. All rights reserved.
7+
//
8+
9+
import Foundation
10+
11+
typealias DatastorePageIdentifier = DatedIdentifier<DiskPersistence<ReadOnly>.Datastore.Page>
12+
13+
extension DiskPersistence.Datastore {
14+
actor Page: Identifiable {
15+
unowned let datastore: DiskPersistence<AccessMode>.Datastore
16+
17+
let id: (index: Index.ID, page: DatastorePageIdentifier)
18+
19+
init(
20+
datastore: DiskPersistence<AccessMode>.Datastore,
21+
indexID: Index.ID,
22+
pageID: DatastorePageIdentifier
23+
) {
24+
self.datastore = datastore
25+
self.id = (index: indexID, page: pageID)
26+
}
27+
}
28+
}

Sources/CodableDatastore/Persistence/Disk Persistence/Datastore/DatastoreRootManifest.swift

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -32,10 +32,10 @@ struct DatastoreRootManifest: Codable, Equatable, Identifiable {
3232
var primaryIndexManifest: IndexInfo
3333

3434
/// A pointer to the direct indexes' root objects.
35-
var directIndexManifests: [String: IndexInfo] = [:]
35+
var directIndexManifests: [DatastoreIndexIdentifier: IndexInfo] = [:]
3636

3737
/// A pointer to the secondary indexes' root objects.
38-
var secondaryIndexManifests: [String: IndexInfo] = [:]
38+
var secondaryIndexManifests: [DatastoreIndexIdentifier: IndexInfo] = [:]
3939
}
4040

4141
extension DatastoreRootManifest {
@@ -44,9 +44,9 @@ extension DatastoreRootManifest {
4444
var key: String
4545

4646
/// The identifier for the index on disk.
47-
var id: DatastoreIdentifier
47+
var id: DatastoreIndexIdentifier
4848

4949
/// The root object of the index.
50-
var root: DatastoreRootIdentifier
50+
var root: DatastoreIndexManifestIdentifier
5151
}
5252
}

Sources/CodableDatastore/Persistence/Disk Persistence/Datastore/PersistenceDatastore.swift

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,16 @@ extension DiskPersistence {
2020

2121
var lastUpdateDescriptorTask: Task<Any, Error>?
2222

23+
/// The root objects that are being tracked in memory.
24+
var trackedRootObjects: [RootObject.ID : RootObject] = [:]
25+
var trackedIndex: [Index.ID : Index] = [:]
26+
var trackedPages: [Page.ID : Page] = [:]
27+
28+
/// The root objects on the file system that are actively loaded in memory.
29+
var loadedRootObjects: [RootObject.ID : RootObject] = [:]
30+
var loadedIndex: [Index.ID : Index] = [:]
31+
var loadedPages: [Page.ID : Page] = [:]
32+
2333
init(
2434
id: DatastoreIdentifier,
2535
snapshot: Snapshot<AccessMode>

0 commit comments

Comments
 (0)