Further tweak persistent store migration

This commit is contained in:
Shadowfacts 2022-12-05 19:32:59 -05:00
parent 4be2258882
commit bebe563e8f
1 changed files with 18 additions and 15 deletions

View File

@ -59,24 +59,27 @@ class MastodonCachePersistentStore: NSPersistentContainer {
// can be removed after a sufficient time has passed
if accountInfo!.id.contains("/") {
for desc in persistentStoreDescriptions {
guard let new = desc.url else {
guard let new = desc.url,
!FileManager.default.fileExists(atPath: new.path) 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)
do {
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)
}
}
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)
}
}
} catch {}
}
}
}