From 03bb7619dadb30c647ce83692d4c68d959b911a9 Mon Sep 17 00:00:00 2001 From: John Rommel Estropia Date: Fri, 22 Sep 2017 00:08:01 +0900 Subject: [PATCH] added queryBuilder utilities for clause sequences --- Sources/ChainedClauseBuilder.swift | 51 ++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) diff --git a/Sources/ChainedClauseBuilder.swift b/Sources/ChainedClauseBuilder.swift index 7bcaae8..722ceb5 100644 --- a/Sources/ChainedClauseBuilder.swift +++ b/Sources/ChainedClauseBuilder.swift @@ -161,6 +161,11 @@ public extension From { return self.fetchChain(appending: clause) } + public func appending(_ clauses: S) -> FetchChainBuilder where S.Element: FetchClause { + + return self.fetchChain(appending: clauses) + } + // MARK: Private @@ -168,6 +173,11 @@ public extension From { return .init(from: self, fetchClauses: [clause]) } + + private func fetchChain(appending clauses: S) -> FetchChainBuilder where S.Element: FetchClause { + + return .init(from: self, fetchClauses: Array(clauses)) + } } public extension From where D: NSManagedObject { @@ -293,6 +303,11 @@ public extension FetchChainBuilder { return self.fetchChain(appending: clause) } + public func appending(_ clauses: S) -> FetchChainBuilder where S.Element: FetchClause { + + return self.fetchChain(appending: clauses) + } + // MARK: Private @@ -303,6 +318,14 @@ public extension FetchChainBuilder { fetchClauses: self.fetchClauses + [clause] ) } + + private func fetchChain(appending clauses: S) -> FetchChainBuilder where S.Element: FetchClause { + + return .init( + from: self.from, + fetchClauses: self.fetchClauses + Array(clauses) + ) + } } public extension QueryChainBuilder { @@ -352,6 +375,11 @@ public extension QueryChainBuilder { return self.queryChain(appending: clause) } + public func appending(_ clauses: S) -> QueryChainBuilder where S.Element: QueryClause { + + return self.queryChain(appending: clauses) + } + // MARK: Private @@ -363,6 +391,15 @@ public extension QueryChainBuilder { queryClauses: self.queryClauses + [clause] ) } + + private func queryChain(appending clauses: S) -> QueryChainBuilder where S.Element: QueryClause { + + return .init( + from: self.from, + select: self.select, + queryClauses: self.queryClauses + Array(clauses) + ) + } } public extension QueryChainBuilder where D: NSManagedObject { @@ -429,6 +466,11 @@ public extension SectionMonitorChainBuilder { return self.sectionMonitorChain(appending: clause) } + public func appending(_ clauses: S) -> SectionMonitorChainBuilder where S.Element: FetchClause { + + return self.sectionMonitorChain(appending: clauses) + } + // MARK: Private @@ -440,4 +482,13 @@ public extension SectionMonitorChainBuilder { fetchClauses: self.fetchClauses + [clause] ) } + + private func sectionMonitorChain(appending clauses: S) -> SectionMonitorChainBuilder where S.Element: FetchClause { + + return .init( + from: self.from, + sectionBy: self.sectionBy, + fetchClauses: self.fetchClauses + Array(clauses) + ) + } }