@@ -266,3 +266,79 @@ public extension String {
266266 return . comparison( comparison)
267267 }
268268}
269+
270+ public func < < K: CodingKey , T: AttributeEncodable > ( lhs: K , rhs: T ) -> FetchRequest . Predicate {
271+
272+ let comparison = FetchRequest . Predicate. Comparison ( left: . keyPath( . init( rawValue: lhs. stringValue) ) ,
273+ right: . attribute( rhs. attributeValue) ,
274+ type: . lessThan)
275+
276+ return . comparison( comparison)
277+ }
278+
279+ public func <= < K: CodingKey , T: AttributeEncodable > ( lhs: K , rhs: T ) -> FetchRequest . Predicate {
280+
281+ let comparison = FetchRequest . Predicate. Comparison ( left: . keyPath( . init( rawValue: lhs. stringValue) ) ,
282+ right: . attribute( rhs. attributeValue) ,
283+ type: . lessThanOrEqualTo)
284+
285+ return . comparison( comparison)
286+ }
287+
288+ public func > < K: CodingKey , T: AttributeEncodable > ( lhs: K , rhs: T ) -> FetchRequest . Predicate {
289+
290+ let comparison = FetchRequest . Predicate. Comparison ( left: . keyPath( . init( rawValue: lhs. stringValue) ) ,
291+ right: . attribute( rhs. attributeValue) ,
292+ type: . greaterThan)
293+
294+ return . comparison( comparison)
295+ }
296+
297+ public func >= < K: CodingKey , T: AttributeEncodable > ( lhs: K , rhs: T ) -> FetchRequest . Predicate {
298+
299+ let comparison = FetchRequest . Predicate. Comparison ( left: . keyPath( . init( rawValue: lhs. stringValue) ) ,
300+ right: . attribute( rhs. attributeValue) ,
301+ type: . greaterThanOrEqualTo)
302+
303+ return . comparison( comparison)
304+ }
305+
306+ public func == < K: CodingKey , T: AttributeEncodable > ( lhs: K , rhs: T ) -> FetchRequest . Predicate {
307+
308+ let comparison = FetchRequest . Predicate. Comparison ( left: . keyPath( . init( rawValue: lhs. stringValue) ) ,
309+ right: . attribute( rhs. attributeValue) ,
310+ type: . equalTo)
311+
312+ return . comparison( comparison)
313+ }
314+
315+ public func != < K: CodingKey , T: AttributeEncodable > ( lhs: K , rhs: T ) -> FetchRequest . Predicate {
316+
317+ let comparison = FetchRequest . Predicate. Comparison ( left: . keyPath( . init( rawValue: lhs. stringValue) ) ,
318+ right: . attribute( rhs. attributeValue) ,
319+ type: . notEqualTo)
320+
321+ return . comparison( comparison)
322+ }
323+
324+ // Extensions for KeyPath comparisons
325+ public extension CodingKey {
326+
327+ func compare( _ type: FetchRequest . Predicate . Comparison . Operator , _ rhs: FetchRequest . Predicate . Expression ) -> FetchRequest . Predicate {
328+
329+ let comparison = FetchRequest . Predicate. Comparison ( left: . keyPath( . init( rawValue: stringValue) ) , right: rhs, type: type)
330+ return . comparison( comparison)
331+ }
332+
333+ func compare( _ type: FetchRequest . Predicate . Comparison . Operator , _ options: Set < FetchRequest . Predicate . Comparison . Option > , _ rhs: FetchRequest . Predicate . Expression ) -> FetchRequest . Predicate {
334+
335+ let comparison = FetchRequest . Predicate. Comparison ( left: . keyPath( . init( rawValue: stringValue) ) , right: rhs, type: type, options: options)
336+ return . comparison( comparison)
337+ }
338+
339+ func compare( _ modifier: FetchRequest . Predicate . Comparison . Modifier , _ type: FetchRequest . Predicate . Comparison . Operator , _ options: Set < FetchRequest . Predicate . Comparison . Option > , _ rhs: FetchRequest . Predicate . Expression ) -> FetchRequest . Predicate {
340+
341+ let comparison = FetchRequest . Predicate. Comparison ( left: . keyPath( . init( rawValue: stringValue) ) , right: rhs, type: type, modifier: modifier, options: options)
342+ return . comparison( comparison)
343+ }
344+ }
0 commit comments