From f72efc80b2f23923fc3d4483cd45e02e40eaf120 Mon Sep 17 00:00:00 2001 From: John Rommel Estropia Date: Sat, 24 Jun 2017 17:42:56 +0900 Subject: [PATCH] added utilities for combining Where arrays and OrderBy arrays --- Sources/OrderBy.swift | 14 ++++++++++++++ Sources/Where.swift | 22 ++++++++++++++++++++++ 2 files changed, 36 insertions(+) diff --git a/Sources/OrderBy.swift b/Sources/OrderBy.swift index 692a8fe..80ecb7a 100644 --- a/Sources/OrderBy.swift +++ b/Sources/OrderBy.swift @@ -172,3 +172,17 @@ public struct OrderBy: FetchClause, QueryClause, DeleteClause, Hashable { return (self.sortDescriptors as NSArray).hashValue } } + + +// MARK: - Sequence where Element == OrderBy + +public extension Sequence where Iterator.Element == OrderBy { + + /** + Combines multiple `OrderBy` predicates together + */ + public func combined() -> OrderBy { + + return OrderBy(self.flatMap({ $0.sortDescriptors })) + } +} diff --git a/Sources/Where.swift b/Sources/Where.swift index 2571238..f9fe369 100644 --- a/Sources/Where.swift +++ b/Sources/Where.swift @@ -216,3 +216,25 @@ public struct Where: FetchClause, QueryClause, DeleteClause, Hashable { return self.predicate.hashValue } } + + +// MARK: - Sequence where Element == Where + +public extension Sequence where Iterator.Element == Where { + + /** + Combines multiple `Where` predicates together using `AND` operator + */ + public func combinedByAnd() -> Where { + + return Where(NSCompoundPredicate(type: .and, subpredicates: self.map({ $0.predicate }))) + } + + /** + Combines multiple `Where` predicates together using `OR` operator + */ + public func combinedByOr() -> Where { + + return Where(NSCompoundPredicate(type: .or, subpredicates: self.map({ $0.predicate }))) + } +}