Actually migrate to new persistent store locations

This commit is contained in:
Shadowfacts 2022-12-04 17:33:09 -05:00
parent 044d34d20f
commit 41775e5d19
1 changed files with 25 additions and 0 deletions

View File

@ -54,6 +54,31 @@ class MastodonCachePersistentStore: NSPersistentContainer {
persistentStoreDescriptions = [storeDescription]
} else {
super.init(name: "\(accountInfo!.persistenceKey)_cache", managedObjectModel: MastodonCachePersistentStore.managedObjectModel)
// workaround for migrating from using id in name to persistenceKey
// can be removed after a sufficient time has passed
if accountInfo!.id.contains("/") {
for desc in persistentStoreDescriptions {
guard let new = desc.url else {
continue
}
for ext in ["sqlite", "sqlite-shm", "sqlite-wal"] {
var old = new.deletingLastPathComponent()
let components = accountInfo!.id.split(separator: "/")
for dir in components.dropLast(1) {
old.appendPathComponent(String(dir), isDirectory: true)
}
old.appendPathComponent("\(components.last!)_cache", isDirectory: false)
old.appendPathExtension(ext)
if FileManager.default.fileExists(atPath: old.path) {
var expected = new.deletingLastPathComponent()
expected.appendPathComponent("\(accountInfo!.persistenceKey)_cache", isDirectory: false)
expected.appendPathExtension(ext)
try? FileManager.default.moveItem(at: old, to: expected)
}
}
}
}
}
loadPersistentStores { (description, error) in