64 lines
1.8 KiB
Swift
64 lines
1.8 KiB
Swift
import Foundation
|
|
import SwiftData
|
|
|
|
@Model
|
|
final class LibraryBook {
|
|
@Attribute(.unique) var localId: UUID
|
|
var title: String
|
|
var authorsString: String
|
|
var coverUrlString: String?
|
|
var isbn10: String?
|
|
var isbn13: String?
|
|
var publishedYear: Int?
|
|
var categoriesString: String
|
|
var summary: String?
|
|
var dateAdded: Date
|
|
var language: String?
|
|
var sourceLocale: String?
|
|
var remotePayloadJson: String?
|
|
|
|
init(
|
|
localId: UUID = UUID(),
|
|
title: String,
|
|
authorsString: String,
|
|
coverUrlString: String? = nil,
|
|
isbn10: String? = nil,
|
|
isbn13: String? = nil,
|
|
publishedYear: Int? = nil,
|
|
categoriesString: String = "",
|
|
summary: String? = nil,
|
|
dateAdded: Date = .now,
|
|
language: String? = nil,
|
|
sourceLocale: String? = nil,
|
|
remotePayloadJson: String? = nil
|
|
) {
|
|
self.localId = localId
|
|
self.title = title
|
|
self.authorsString = authorsString
|
|
self.coverUrlString = coverUrlString
|
|
self.isbn10 = isbn10
|
|
self.isbn13 = isbn13
|
|
self.publishedYear = publishedYear
|
|
self.categoriesString = categoriesString
|
|
self.summary = summary
|
|
self.dateAdded = dateAdded
|
|
self.language = language
|
|
self.sourceLocale = sourceLocale
|
|
self.remotePayloadJson = remotePayloadJson
|
|
}
|
|
|
|
var authors: [String] {
|
|
authorsString
|
|
.split(separator: ",")
|
|
.map { $0.trimmingCharacters(in: .whitespacesAndNewlines) }
|
|
.filter { !$0.isEmpty }
|
|
}
|
|
|
|
var categories: [String] {
|
|
categoriesString
|
|
.split(separator: ",")
|
|
.map { $0.trimmingCharacters(in: .whitespacesAndNewlines) }
|
|
.filter { !$0.isEmpty }
|
|
}
|
|
}
|