Reorganize saving, generate feed
This commit is contained in:
23
CHDataManagement/Storage/Model/FileOnDisk.swift
Normal file
23
CHDataManagement/Storage/Model/FileOnDisk.swift
Normal file
@@ -0,0 +1,23 @@
|
||||
import Foundation
|
||||
|
||||
struct FileOnDisk {
|
||||
|
||||
let type: FileType
|
||||
|
||||
let url: URL
|
||||
|
||||
let name: String
|
||||
|
||||
init(image: String, url: URL) {
|
||||
self.type = .image
|
||||
self.url = url
|
||||
self.name = image
|
||||
}
|
||||
|
||||
init(type: FileType, url: URL, name: String) {
|
||||
self.type = type
|
||||
self.url = url
|
||||
self.name = name
|
||||
}
|
||||
}
|
||||
|
25
CHDataManagement/Storage/Model/FileType.swift
Normal file
25
CHDataManagement/Storage/Model/FileType.swift
Normal file
@@ -0,0 +1,25 @@
|
||||
import Foundation
|
||||
|
||||
enum FileType {
|
||||
case image
|
||||
case file
|
||||
case video
|
||||
case resource
|
||||
|
||||
|
||||
init(fileExtension: String) {
|
||||
switch fileExtension.lowercased() {
|
||||
case "jpg", "jpeg", "png", "gif":
|
||||
self = .image
|
||||
case "html", "stl", "f3d", "step", "f3z", "zip", "json", "conf", "css", "js", "cpp", "cddx", "svg", "glb", "mp3", "pdf", "swift":
|
||||
self = .file
|
||||
case "mp4":
|
||||
self = .video
|
||||
case "key", "psd":
|
||||
self = .resource
|
||||
default:
|
||||
print("Unhandled file type: \(fileExtension)")
|
||||
self = .resource
|
||||
}
|
||||
}
|
||||
}
|
62
CHDataManagement/Storage/Model/PageFile.swift
Normal file
62
CHDataManagement/Storage/Model/PageFile.swift
Normal file
@@ -0,0 +1,62 @@
|
||||
import Foundation
|
||||
|
||||
struct PageFile {
|
||||
|
||||
let isDraft: Bool
|
||||
|
||||
let tags: [String]
|
||||
|
||||
let createdDate: Date
|
||||
|
||||
let startDate: Date
|
||||
|
||||
let endDate: Date?
|
||||
|
||||
let german: LocalizedPageFile
|
||||
|
||||
let english: LocalizedPageFile
|
||||
}
|
||||
|
||||
extension PageFile: Codable {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
The structure to store the metadata of a localized page
|
||||
*/
|
||||
struct LocalizedPageFile {
|
||||
|
||||
let url: String
|
||||
|
||||
/**
|
||||
The files (images, videos, other files) used in the page.
|
||||
*/
|
||||
let files: [String]
|
||||
|
||||
/**
|
||||
The additional files required for the page to function correctly, but which are not stored with the content.
|
||||
*/
|
||||
let externalFiles: [String]
|
||||
|
||||
/**
|
||||
Specifies additional files which should be copied to the destination when generating the content.
|
||||
- Note: This property defaults to an empty set.
|
||||
*/
|
||||
let requiredFiles: [String]
|
||||
|
||||
let title: String
|
||||
|
||||
let linkPreviewImage: String?
|
||||
|
||||
let linkPreviewTitle: String?
|
||||
|
||||
let linkPreviewDescription: String?
|
||||
|
||||
let lastModifiedDate: Date?
|
||||
|
||||
let originalURL: String?
|
||||
}
|
||||
|
||||
extension LocalizedPageFile: Codable {
|
||||
|
||||
}
|
11
CHDataManagement/Storage/Model/PageOnDisk.swift
Normal file
11
CHDataManagement/Storage/Model/PageOnDisk.swift
Normal file
@@ -0,0 +1,11 @@
|
||||
import Foundation
|
||||
|
||||
struct PageOnDisk {
|
||||
|
||||
let page: PageFile
|
||||
|
||||
let deContentUrl: URL
|
||||
|
||||
let enContentUrl: URL
|
||||
}
|
||||
|
48
CHDataManagement/Storage/Model/PostFile.swift
Normal file
48
CHDataManagement/Storage/Model/PostFile.swift
Normal file
@@ -0,0 +1,48 @@
|
||||
import Foundation
|
||||
|
||||
struct PostFile {
|
||||
|
||||
let isDraft: Bool
|
||||
|
||||
let createdDate: Date
|
||||
|
||||
let startDate: Date
|
||||
|
||||
let endDate: Date?
|
||||
|
||||
let tags: [String]
|
||||
|
||||
let german: LocalizedPostFile
|
||||
|
||||
let english: LocalizedPostFile
|
||||
|
||||
let linkedPageId: String?
|
||||
}
|
||||
|
||||
extension PostFile: Codable {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
The structure to store the metadata of a localized post
|
||||
*/
|
||||
struct LocalizedPostFile {
|
||||
|
||||
let images: [String]
|
||||
|
||||
let title: String?
|
||||
|
||||
let content: String
|
||||
|
||||
let lastModifiedDate: Date?
|
||||
|
||||
let linkPreviewImage: String?
|
||||
|
||||
let linkPreviewTitle: String?
|
||||
|
||||
let linkPreviewDescription: String?
|
||||
}
|
||||
|
||||
extension LocalizedPostFile: Codable {
|
||||
|
||||
}
|
41
CHDataManagement/Storage/Model/TagFile.swift
Normal file
41
CHDataManagement/Storage/Model/TagFile.swift
Normal file
@@ -0,0 +1,41 @@
|
||||
import Foundation
|
||||
|
||||
struct TagFile {
|
||||
|
||||
let id: String
|
||||
|
||||
let isVisible: Bool
|
||||
|
||||
let german: LocalizedTagFile
|
||||
|
||||
let english: LocalizedTagFile
|
||||
|
||||
}
|
||||
|
||||
extension TagFile: Codable {
|
||||
|
||||
}
|
||||
|
||||
struct LocalizedTagFile {
|
||||
|
||||
/// The id of the tag, used also as a url component
|
||||
let urlComponent: String
|
||||
|
||||
/// A custom name, different from the tag id
|
||||
let name: String
|
||||
|
||||
let subtitle: String?
|
||||
|
||||
let description: String?
|
||||
|
||||
/// The image id of the thumbnail
|
||||
let thumbnail: String?
|
||||
|
||||
/// The original url in the previous site layout
|
||||
let originalURL: String?
|
||||
|
||||
}
|
||||
|
||||
extension LocalizedTagFile: Codable {
|
||||
|
||||
}
|
28
CHDataManagement/Storage/Model/WebsiteDataFile.swift
Normal file
28
CHDataManagement/Storage/Model/WebsiteDataFile.swift
Normal file
@@ -0,0 +1,28 @@
|
||||
import Foundation
|
||||
|
||||
struct WebsiteDataFile {
|
||||
|
||||
let navigationTags: [String]
|
||||
|
||||
let german: LocalizedWebsiteDataFile
|
||||
|
||||
let english: LocalizedWebsiteDataFile
|
||||
}
|
||||
|
||||
extension WebsiteDataFile: Codable {
|
||||
|
||||
}
|
||||
|
||||
struct LocalizedWebsiteDataFile {
|
||||
|
||||
let title: String
|
||||
|
||||
let description: String
|
||||
|
||||
let iconDescription: String
|
||||
|
||||
}
|
||||
|
||||
extension LocalizedWebsiteDataFile: Codable {
|
||||
|
||||
}
|
Reference in New Issue
Block a user