mirror of
https://github.com/mastodon/mastodon-ios
synced 2025-04-11 22:58:02 +02:00
181 lines
4.8 KiB
Swift
181 lines
4.8 KiB
Swift
//
|
|
// Card.swift
|
|
// CoreDataStack
|
|
//
|
|
// Created by Kyle Bashour on 11/23/22.
|
|
//
|
|
|
|
import Foundation
|
|
import CoreData
|
|
|
|
public final class Card: NSManagedObject {
|
|
// sourcery: autoGenerateProperty
|
|
@NSManaged public private(set) var urlRaw: String
|
|
public var url: URL? {
|
|
URL(string: urlRaw)
|
|
}
|
|
|
|
// sourcery: autoGenerateProperty
|
|
@NSManaged public private(set) var title: String
|
|
// sourcery: autoGenerateProperty
|
|
@NSManaged public private(set) var desc: String
|
|
|
|
@NSManaged public private(set) var typeRaw: String
|
|
// sourcery: autoGenerateProperty
|
|
public var type: MastodonCardType {
|
|
get { MastodonCardType(rawValue: typeRaw) }
|
|
set { typeRaw = newValue.rawValue }
|
|
}
|
|
|
|
// sourcery: autoGenerateProperty
|
|
@NSManaged public private(set) var authorName: String?
|
|
// sourcery: autoGenerateProperty
|
|
@NSManaged public private(set) var authorURLRaw: String?
|
|
// sourcery: autoGenerateProperty
|
|
@NSManaged public private(set) var providerName: String?
|
|
// sourcery: autoGenerateProperty
|
|
@NSManaged public private(set) var providerURLRaw: String?
|
|
// sourcery: autoGenerateProperty
|
|
@NSManaged public private(set) var width: Int64
|
|
// sourcery: autoGenerateProperty
|
|
@NSManaged public private(set) var height: Int64
|
|
// sourcery: autoGenerateProperty
|
|
@NSManaged public private(set) var image: String?
|
|
public var imageURL: URL? {
|
|
image.flatMap(URL.init)
|
|
}
|
|
|
|
// sourcery: autoGenerateProperty
|
|
@NSManaged public private(set) var embedURLRaw: String?
|
|
// sourcery: autoGenerateProperty
|
|
@NSManaged public private(set) var blurhash: String?
|
|
// sourcery: autoGenerateProperty
|
|
@NSManaged public private(set) var html: String?
|
|
|
|
// sourcery: autoGenerateRelationship
|
|
@NSManaged public private(set) var status: Status
|
|
}
|
|
|
|
extension Card {
|
|
|
|
@discardableResult
|
|
public static func insert(
|
|
into context: NSManagedObjectContext,
|
|
property: Property
|
|
) -> Card {
|
|
let object: Card = context.insertObject()
|
|
|
|
object.configure(property: property)
|
|
|
|
return object
|
|
}
|
|
|
|
}
|
|
|
|
extension Card: Managed {
|
|
public static var defaultSortDescriptors: [NSSortDescriptor] {
|
|
return []
|
|
}
|
|
}
|
|
|
|
// MARK: - AutoGenerateProperty
|
|
extension Card: AutoGenerateProperty {
|
|
// sourcery:inline:Card.AutoGenerateProperty
|
|
|
|
// Generated using Sourcery
|
|
// DO NOT EDIT
|
|
public struct Property {
|
|
public let urlRaw: String
|
|
public let title: String
|
|
public let desc: String
|
|
public let type: MastodonCardType
|
|
public let authorName: String?
|
|
public let authorURLRaw: String?
|
|
public let providerName: String?
|
|
public let providerURLRaw: String?
|
|
public let width: Int64
|
|
public let height: Int64
|
|
public let image: String?
|
|
public let embedURLRaw: String?
|
|
public let blurhash: String?
|
|
public let html: String?
|
|
|
|
public init(
|
|
urlRaw: String,
|
|
title: String,
|
|
desc: String,
|
|
type: MastodonCardType,
|
|
authorName: String?,
|
|
authorURLRaw: String?,
|
|
providerName: String?,
|
|
providerURLRaw: String?,
|
|
width: Int64,
|
|
height: Int64,
|
|
image: String?,
|
|
embedURLRaw: String?,
|
|
blurhash: String?,
|
|
html: String?
|
|
) {
|
|
self.urlRaw = urlRaw
|
|
self.title = title
|
|
self.desc = desc
|
|
self.type = type
|
|
self.authorName = authorName
|
|
self.authorURLRaw = authorURLRaw
|
|
self.providerName = providerName
|
|
self.providerURLRaw = providerURLRaw
|
|
self.width = width
|
|
self.height = height
|
|
self.image = image
|
|
self.embedURLRaw = embedURLRaw
|
|
self.blurhash = blurhash
|
|
self.html = html
|
|
}
|
|
}
|
|
|
|
public func configure(property: Property) {
|
|
self.urlRaw = property.urlRaw
|
|
self.title = property.title
|
|
self.desc = property.desc
|
|
self.type = property.type
|
|
self.authorName = property.authorName
|
|
self.authorURLRaw = property.authorURLRaw
|
|
self.providerName = property.providerName
|
|
self.providerURLRaw = property.providerURLRaw
|
|
self.width = property.width
|
|
self.height = property.height
|
|
self.image = property.image
|
|
self.embedURLRaw = property.embedURLRaw
|
|
self.blurhash = property.blurhash
|
|
self.html = property.html
|
|
}
|
|
|
|
public func update(property: Property) {
|
|
}
|
|
|
|
// sourcery:end
|
|
}
|
|
|
|
// MARK: - AutoGenerateRelationship
|
|
extension Card: AutoGenerateRelationship {
|
|
// sourcery:inline:Card.AutoGenerateRelationship
|
|
|
|
// Generated using Sourcery
|
|
// DO NOT EDIT
|
|
public struct Relationship {
|
|
public let status: Status
|
|
|
|
public init(
|
|
status: Status
|
|
) {
|
|
self.status = status
|
|
}
|
|
}
|
|
|
|
public func configure(relationship: Relationship) {
|
|
self.status = relationship.status
|
|
}
|
|
|
|
// sourcery:end
|
|
}
|