Rework storage structs, link preview
This commit is contained in:
@ -2,22 +2,25 @@ import Foundation
|
||||
|
||||
extension Content {
|
||||
|
||||
func saveToDisk() throws {
|
||||
func saveToDisk() -> Bool {
|
||||
guard didLoadContent else { return false }
|
||||
guard storage.contentScope != nil else {
|
||||
print("Storage not initialized, not saving content")
|
||||
return
|
||||
return false
|
||||
}
|
||||
|
||||
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.file, for: $0.id) }
|
||||
failedSaves.increment(!storage.save(settings: settings.file(tagOverview: tagOverview)))
|
||||
failedSaves += files.count { !storage.save(fileInfo: $0.fileInfo, for: $0.id) }
|
||||
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 {
|
||||
@ -37,49 +40,3 @@ extension Content {
|
||||
return success
|
||||
}
|
||||
}
|
||||
|
||||
private extension Page {
|
||||
|
||||
var pageFile: PageFile {
|
||||
.init(isDraft: isDraft,
|
||||
externalLink: externalLink,
|
||||
tags: tags.map { $0.id },
|
||||
hideDate: hideDate ? true : nil,
|
||||
createdDate: createdDate,
|
||||
startDate: startDate,
|
||||
endDate: hasEndDate ? endDate : nil,
|
||||
german: german.pageFile,
|
||||
english: english.pageFile,
|
||||
requiredFiles: requiredFiles.nonEmpty?.map { $0.id }.sorted())
|
||||
}
|
||||
}
|
||||
|
||||
private extension LocalizedPage {
|
||||
|
||||
var pageFile: LocalizedPageFile {
|
||||
.init(url: urlString,
|
||||
title: title,
|
||||
linkPreviewImage: linkPreviewImage?.id,
|
||||
linkPreviewTitle: linkPreviewTitle,
|
||||
linkPreviewDescription: linkPreviewDescription,
|
||||
lastModifiedDate: lastModified,
|
||||
originalURL: originalUrl,
|
||||
hideTitle: hideTitle ? true : nil)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private extension Post {
|
||||
|
||||
var postFile: PostFile {
|
||||
.init(
|
||||
isDraft: isDraft,
|
||||
createdDate: createdDate,
|
||||
startDate: startDate,
|
||||
endDate: hasEndDate ? endDate : nil,
|
||||
tags: tags.map { $0.id },
|
||||
german: german.postFile,
|
||||
english: english.postFile,
|
||||
linkedPageId: linkedPage?.id)
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user