Improve storage
This commit is contained in:
@ -3,23 +3,16 @@ import Foundation
|
||||
extension Content {
|
||||
|
||||
func saveToDisk() throws {
|
||||
guard storage.hasContentFolders else {
|
||||
guard storage.contentScope != nil else {
|
||||
print("Storage not initialized, not saving content")
|
||||
return
|
||||
}
|
||||
//print("Starting save")
|
||||
for page in pages {
|
||||
try storage.save(pageMetadata: page.pageFile, for: page.id)
|
||||
}
|
||||
|
||||
for post in posts {
|
||||
try storage.save(post: post.postFile, for: post.id)
|
||||
}
|
||||
|
||||
for tag in tags {
|
||||
try storage.save(tagMetadata: tag.tagFile, for: tag.id)
|
||||
}
|
||||
try storage.save(settings: settings.file)
|
||||
var failedSaves = 0
|
||||
failedSaves += pages.count { !storage.save(pageMetadata: $0.pageFile, for: $0.id) }
|
||||
failedSaves += posts.count { !storage.save(post: $0.postFile, for: $0.id) }
|
||||
failedSaves += tags.count { !storage.save(tagMetadata: $0.tagFile, for: $0.id) }
|
||||
failedSaves.increment(!storage.save(settings: settings.file))
|
||||
|
||||
let fileDescriptions: [FileDescriptions] = files.sorted().compactMap { file in
|
||||
guard !file.english.isEmpty || !file.german.isEmpty else {
|
||||
@ -31,21 +24,33 @@ extension Content {
|
||||
english: file.english.nonEmpty)
|
||||
}
|
||||
|
||||
try storage.save(fileDescriptions: fileDescriptions)
|
||||
try storage.save(tagOverview: tagOverview?.file)
|
||||
failedSaves.increment(!storage.save(fileDescriptions: fileDescriptions))
|
||||
failedSaves.increment(!storage.save(tagOverview: tagOverview?.file))
|
||||
|
||||
let externalFileList = files.filter { $0.isExternallyStored }.map { $0.id }
|
||||
try storage.save(externalFileList: externalFileList)
|
||||
failedSaves.increment(!storage.save(externalFileList: externalFileList))
|
||||
|
||||
do {
|
||||
try storage.deletePostFiles(notIn: posts.map { $0.id })
|
||||
try storage.deletePageFiles(notIn: pages.map { $0.id })
|
||||
try storage.deleteTagFiles(notIn: tags.map { $0.id })
|
||||
try storage.deleteFileResources(notIn: files.map { $0.id })
|
||||
} catch {
|
||||
print("Failed to remove unused files: \(error)")
|
||||
if failedSaves > 0 {
|
||||
print("Save partially failed with \(failedSaves) errors")
|
||||
}
|
||||
}
|
||||
|
||||
func removeUnlinkedFiles() -> Bool {
|
||||
var success = true
|
||||
if !storage.deletePostFiles(notIn: posts.map { $0.id }) {
|
||||
success = false
|
||||
}
|
||||
if !storage.deletePageFiles(notIn: pages.map { $0.id }) {
|
||||
success = false
|
||||
}
|
||||
if !storage.deleteTagFiles(notIn: tags.map { $0.id }) {
|
||||
success = false
|
||||
}
|
||||
if !storage.deleteFileResources(notIn: files.map { $0.id }) {
|
||||
success = false
|
||||
}
|
||||
return success
|
||||
}
|
||||
}
|
||||
|
||||
private extension Page {
|
||||
|
Reference in New Issue
Block a user