43 lines
1.4 KiB
Swift
43 lines
1.4 KiB
Swift
import Foundation
|
|
|
|
extension Content {
|
|
|
|
func saveToDisk() -> Bool {
|
|
guard didLoadContent else { return false }
|
|
guard storage.contentScope != nil else {
|
|
print("Storage not initialized, not saving content")
|
|
return false
|
|
}
|
|
|
|
var failedSaves = 0
|
|
failedSaves += pages.count { !storage.save(pageMetadata: $0.data, for: $0.id) }
|
|
failedSaves += posts.count { !storage.save(post: $0.data, for: $0.id) }
|
|
failedSaves += tags.count { !storage.save(tagMetadata: $0.data, for: $0.id) }
|
|
failedSaves.increment(!storage.save(settings: settings.data(tagOverview: tagOverview)))
|
|
failedSaves += files.count { !storage.save(fileInfo: $0.data, for: $0.id) }
|
|
|
|
if failedSaves > 0 {
|
|
print("Save partially failed with \(failedSaves) errors")
|
|
return false
|
|
}
|
|
return true
|
|
}
|
|
|
|
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
|
|
}
|
|
}
|