67 lines
1.8 KiB
Swift
67 lines
1.8 KiB
Swift
//
|
|
// 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 {
|
|
|
|
@nonobjc public class func fetchRequest() -> NSFetchRequest<FilterMO> {
|
|
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]?
|
|
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
|
|
}
|
|
}
|