2
2
mirror of https://github.com/mastodon/mastodon-ios synced 2025-04-11 22:58:02 +02:00

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
}