ChWebsiteApp/CHDataManagement/Model/Content+Save.swift
2025-01-08 14:59:04 +01:00

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
}
}