File tree Expand file tree Collapse file tree 1 file changed +10
-0
lines changed
src/Database/Esqueleto/Internal Expand file tree Collapse file tree 1 file changed +10
-0
lines changed Original file line number Diff line number Diff line change @@ -33,6 +33,7 @@ module Database.Esqueleto.Internal.Sql
3333 , unsafeSqlBinOp
3434 , unsafeSqlBinOpComposite
3535 , unsafeSqlValue
36+ , unsafeSqlCastAs
3637 , unsafeSqlFunction
3738 , unsafeSqlExtractSubField
3839 , UnsafeSqlFunctionArgument
@@ -101,6 +102,7 @@ data CompositeKeyError =
101102 | FoldHelpError
102103 | SqlCaseError
103104 | SqlBinOpError
105+ | SqlCastAsError
104106 | MakeOnClauseError
105107 | MakeExcError
106108 | MakeSetError
@@ -765,6 +767,14 @@ unsafeSqlFunctionParens name arg =
765767 uncommas' $ map (\ (ERaw p f) -> first (parensM p) (f info)) $ toArgList arg
766768 in (name <> parens argsTLB, argsVals)
767769
770+ -- | (Internal) An explicit SQL type cast using CAST(value as type).
771+ -- See 'unsafeSqlBinOp' for warnings.
772+ unsafeSqlCastAs :: T. Text -> SqlExpr (Value a ) -> SqlExpr (Value b )
773+ unsafeSqlCastAs t (ERaw p f) =
774+ ERaw Never $ \ info ->
775+ let (b, v) = f info
776+ in (" CAST" <> parens ( parensM p b <> " AS " <> TLB. fromText t), v )
777+ unsafeSqlCastAs _ (ECompositeKey _) = throw (CompositeKeyErr SqlCastAsError )
768778
769779class UnsafeSqlFunctionArgument a where
770780 toArgList :: a -> [SqlExpr (Value () )]
You can’t perform that action at this time.
0 commit comments