@@ -832,8 +832,9 @@ extension QueryExpression where QueryValue: QueryBindable {
832832 ///
833833 /// - Parameter expression: A sequence of expressions.
834834 /// - Returns: A predicate expression indicating whether this expression is in the given sequence
835- public func `in`( _ expression: [ some QueryExpression < QueryValue > ] ) -> some QueryExpression < Bool > {
836- BinaryOperator ( lhs: self , operator: " IN " , rhs: Array . Expression ( elements: expression) )
835+ public func `in`< S: Sequence > ( _ expression: S ) -> some QueryExpression < Bool >
836+ where S. Element: QueryExpression < QueryValue > {
837+ BinaryOperator ( lhs: self , operator: " IN " , rhs: S . Expression ( elements: expression) )
837838 }
838839
839840 /// Returns a predicate expression indicating whether the expression is in a subquery.
@@ -868,7 +869,7 @@ extension QueryExpression where QueryValue: QueryBindable {
868869 }
869870}
870871
871- extension Array where Element: QueryBindable {
872+ extension Sequence where Element: QueryBindable {
872873 /// Returns a predicate expression indicating whether the sequence contains the given expression.
873874 ///
874875 /// An alias for ``QueryExpression/in(_:)``, flipped.
@@ -977,16 +978,15 @@ private struct LikeOperator<
977978 }
978979}
979980
980- extension Array where Element: QueryExpression , Element. QueryValue: QueryBindable {
981- fileprivate struct Expression : QueryExpression {
982- typealias QueryValue = Array
981+ extension Sequence where Element: QueryExpression , Element. QueryValue: QueryBindable {
982+ fileprivate typealias Expression = _SequenceExpression < Self >
983+ }
983984
984- let elements : [ Element ]
985- init ( elements: [ Element ] ) {
986- self . elements = elements
987- }
988- var queryFragment : QueryFragment {
989- " ( \( elements. map ( \. queryFragment) . joined ( separator: " , " ) ) ) "
990- }
985+ private struct _SequenceExpression < S: Sequence > : QueryExpression
986+ where S. Element: QueryExpression , S. Element. QueryValue: QueryBindable {
987+ typealias QueryValue = S
988+ let queryFragment : QueryFragment
989+ init ( elements: S ) {
990+ queryFragment = " ( \( elements. map ( \. queryFragment) . joined ( separator: " , " ) ) ) "
991991 }
992992}
0 commit comments