// // FilterMO.swift // Tusker // // Created by Shadowfacts on 11/30/22. // Copyright © 2022 Shadowfacts. All rights reserved. // import Foundation import CoreData import Pachyderm @objc(FilterMO) public final class FilterMO: NSManagedObject, FilterProtocol { @nonobjc public class func fetchRequest() -> NSFetchRequest { return NSFetchRequest(entityName: "Filter") } @NSManaged public var id: String @NSManaged public var phrase: String @NSManaged private var context: String @NSManaged public var expiresAt: Date? @NSManaged public var irreversible: Bool @NSManaged public var wholeWord: Bool private var _contexts: [Filter.Context]? public var contexts: [Filter.Context] { get { if let _contexts { return _contexts } else { _contexts = context.split(separator: ",").compactMap { .init(rawValue: String($0)) } return _contexts! } } set { _contexts = newValue context = newValue.map(\.rawValue).joined(separator: ",") } } public override func didChangeValue(forKey key: String) { super.didChangeValue(forKey: key) if key == "context" { _contexts = nil } } } extension FilterMO { convenience init(apiFilter filter: Filter, context: NSManagedObjectContext) { self.init(context: context) self.updateFrom(apiFilter: filter) } func updateFrom(apiFilter filter: Filter) { self.id = filter.id self.phrase = filter.phrase self.contexts = filter.contexts self.expiresAt = filter.expiresAt self.irreversible = filter.irreversible self.wholeWord = filter.wholeWord } }