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) + ) + } }