@@ -8,35 +8,37 @@ import StructuredQueriesCore
88//
99// COALESCE returns the first non-NULL value from its arguments.
1010
11- /// A query expression of a coalesce function.
12- ///
13- /// Represents PostgreSQL's `COALESCE` function which returns the first non-NULL value.
14- /// This is used to implement Swift's `??` operator for query expressions.
15- ///
16- /// ```swift
17- /// User.select { $0.nickname ?? $0.name }
18- /// // SELECT coalesce("users"."nickname", "users"."name") FROM "users"
19- /// ```
20- public struct CoalesceFunction < QueryValue> : QueryExpression {
21- private let arguments : [ QueryFragment ]
11+ extension Conditional {
12+ /// A query expression of a COALESCE function.
13+ ///
14+ /// Represents PostgreSQL's `COALESCE` function which returns the first non-NULL value.
15+ /// This is used to implement Swift's `??` operator for query expressions.
16+ ///
17+ /// ```swift
18+ /// User.select { $0.nickname ?? $0.name }
19+ /// // SELECT coalesce("users"."nickname", "users"."name") FROM "users"
20+ /// ```
21+ public struct Coalesce < QueryValue> : QueryExpression {
22+ private let arguments : [ QueryFragment ]
2223
23- fileprivate init ( _ arguments: [ QueryFragment ] ) {
24- self . arguments = arguments
25- }
24+ fileprivate init ( _ arguments: [ QueryFragment ] ) {
25+ self . arguments = arguments
26+ }
2627
27- public var queryFragment : QueryFragment {
28- " coalesce( \( arguments. joined ( separator: " , " ) ) ) "
29- }
28+ public var queryFragment : QueryFragment {
29+ " coalesce( \( arguments. joined ( separator: " , " ) ) ) "
30+ }
3031
31- public static func ?? < T: _OptionalProtocol < QueryValue > > (
32- lhs: some QueryExpression < T > ,
33- rhs: Self
34- ) -> CoalesceFunction < QueryValue > {
35- Self ( [ lhs. queryFragment] + rhs. arguments)
32+ public static func ?? < T: _OptionalProtocol < QueryValue > > (
33+ lhs: some QueryExpression < T > ,
34+ rhs: Self
35+ ) -> Coalesce < QueryValue > {
36+ Self ( [ lhs. queryFragment] + rhs. arguments)
37+ }
3638 }
3739}
3840
39- extension CoalesceFunction where QueryValue: _OptionalProtocol {
41+ extension Conditional . Coalesce where QueryValue: _OptionalProtocol {
4042 public static func ?? (
4143 lhs: some QueryExpression < QueryValue > ,
4244 rhs: Self
@@ -104,8 +106,8 @@ extension QueryExpression where QueryValue: _OptionalProtocol {
104106 public static func ?? (
105107 lhs: Self ,
106108 rhs: some QueryExpression < QueryValue . Wrapped >
107- ) -> CoalesceFunction < QueryValue . Wrapped > {
108- CoalesceFunction ( [ lhs. queryFragment, rhs. queryFragment] )
109+ ) -> Conditional . Coalesce < QueryValue . Wrapped > {
110+ Conditional . Coalesce ( [ lhs. queryFragment, rhs. queryFragment] )
109111 }
110112
111113 /// Applies each side of the operator to the `coalesce` function
@@ -126,8 +128,8 @@ extension QueryExpression where QueryValue: _OptionalProtocol {
126128 public static func ?? (
127129 lhs: Self ,
128130 rhs: some QueryExpression < QueryValue >
129- ) -> CoalesceFunction < QueryValue > {
130- CoalesceFunction ( [ lhs. queryFragment, rhs. queryFragment] )
131+ ) -> Conditional . Coalesce < QueryValue > {
132+ Conditional . Coalesce ( [ lhs. queryFragment, rhs. queryFragment] )
131133 }
132134
133135 @_documentation ( visibility: private)
@@ -140,8 +142,8 @@ extension QueryExpression where QueryValue: _OptionalProtocol {
140142 public static func ?? (
141143 lhs: some QueryExpression < QueryValue . Wrapped > ,
142144 rhs: Self
143- ) -> CoalesceFunction < QueryValue > {
144- CoalesceFunction ( [ lhs. queryFragment, rhs. queryFragment] )
145+ ) -> Conditional . Coalesce < QueryValue > {
146+ Conditional . Coalesce ( [ lhs. queryFragment, rhs. queryFragment] )
145147 }
146148}
147149
@@ -156,7 +158,7 @@ extension QueryExpression {
156158 public static func ?? (
157159 lhs: some QueryExpression < QueryValue > ,
158160 rhs: Self
159- ) -> CoalesceFunction < QueryValue > {
160- CoalesceFunction ( [ lhs. queryFragment, rhs. queryFragment] )
161+ ) -> Conditional . Coalesce < QueryValue > {
162+ Conditional . Coalesce ( [ lhs. queryFragment, rhs. queryFragment] )
161163 }
162164}
0 commit comments