on dev help sign in
required and fromNull
0cff6dbEitan Chatav
squeel-postgresql/src/Squeel/PostgreSQL/Statement.hs+23−15
@@ -104,25 +104,31 @@ coalesce nulls isn'tNull = UnsafeExpression $
104 "COALESCE" <> parenthesized (commaSeparated
104 "COALESCE" <> parenthesized (commaSeparated
105 ((renderExpression <$> nulls) <> [renderExpression isn'tNull]))
105 ((renderExpression <$> nulls) <> [renderExpression isn'tNull]))
106
106
107+fromNull
108+ :: Expression params tables grouping ('Required ('NotNull x))
109+ -> Expression params tables grouping ('Required ('Null x))
110+ -> Expression params tables grouping ('Required ('NotNull x))
111+fromNull isn'tNull isNull = coalesce [isNull] isn'tNull
112+
107unsafeBinaryOp
113unsafeBinaryOp
108 :: ByteString
114 :: ByteString
109− -> Expression params tables grouping ty0
115+ -> Expression params tables grouping ('Required ty0)
110− -> Expression params tables grouping ty1
116+ -> Expression params tables grouping ('Required ty1)
111− -> Expression params tables grouping ty2
117+ -> Expression params tables grouping ('Required ty2)
112unsafeBinaryOp op x y = UnsafeExpression $ parenthesized $
118unsafeBinaryOp op x y = UnsafeExpression $ parenthesized $
113 renderExpression x <+> op <+> renderExpression y
119 renderExpression x <+> op <+> renderExpression y
114
120
115unsafeUnaryOp
121unsafeUnaryOp
116 :: ByteString
122 :: ByteString
117− -> Expression params tables grouping ty0
123+ -> Expression params tables grouping ('Required ty0)
118− -> Expression params tables grouping ty1
124+ -> Expression params tables grouping ('Required ty1)
119unsafeUnaryOp op x = UnsafeExpression $ parenthesized $
125unsafeUnaryOp op x = UnsafeExpression $ parenthesized $
120 op <+> renderExpression x
126 op <+> renderExpression x
121
127
122unsafeFunction
128unsafeFunction
123 :: ByteString
129 :: ByteString
124− -> Expression params tables grouping xty
130+ -> Expression params tables grouping ('Required xty)
125− -> Expression params tables grouping yty
131+ -> Expression params tables grouping ('Required yty)
126unsafeFunction fun x = UnsafeExpression $
132unsafeFunction fun x = UnsafeExpression $
127 fun <> parenthesized (renderExpression x)
133 fun <> parenthesized (renderExpression x)
128
134
@@ -283,9 +289,11 @@ not_ = unsafeUnaryOp "NOT"
283(||*) = unsafeBinaryOp "OR"
289(||*) = unsafeBinaryOp "OR"
284
290
285caseWhenThenElse
291caseWhenThenElse
286− :: [(Condition params tables grouping, Expression params tables grouping ty)]
292+ :: [ ( Condition params tables grouping
293+ , Expression params tables grouping ('Required ty)
294+ ) ]
287− -> Expression params tables grouping ty
295+ -> Expression params tables grouping ('Required ty)
288− -> Expression params tables grouping ty
296+ -> Expression params tables grouping ('Required ty)
289caseWhenThenElse whenThens else_ = UnsafeExpression $ mconcat
297caseWhenThenElse whenThens else_ = UnsafeExpression $ mconcat
290 [ "CASE"
298 [ "CASE"
291 , mconcat
299 , mconcat
@@ -301,9 +309,9 @@ caseWhenThenElse whenThens else_ = UnsafeExpression $ mconcat
301
309
302ifThenElse
310ifThenElse
303 :: Condition params tables grouping
311 :: Condition params tables grouping
304− -> Expression params tables grouping ty
312+ -> Expression params tables grouping ('Required ty)
305− -> Expression params tables grouping ty
313+ -> Expression params tables grouping ('Required ty)
306− -> Expression params tables grouping ty
314+ -> Expression params tables grouping ('Required ty)
307ifThenElse if_ then_ else_ = caseWhenThenElse [(if_,then_)] else_
315ifThenElse if_ then_ else_ = caseWhenThenElse [(if_,then_)] else_
308
316
309(==*)
317(==*)
@@ -440,8 +448,8 @@ instance
440
448
441unsafeAggregate
449unsafeAggregate
442 :: ByteString
450 :: ByteString
443− -> Expression params tables 'Ungrouped xty
451+ -> Expression params tables 'Ungrouped ('Required xty)
444− -> Expression params tables ('Grouped bys) yty
452+ -> Expression params tables ('Grouped bys) ('Required yty)
445unsafeAggregate fun x = UnsafeExpression $ mconcat
453unsafeAggregate fun x = UnsafeExpression $ mconcat
446 [fun, "(", renderExpression x, ")"]
454 [fun, "(", renderExpression x, ")"]
447
455