commit
eb76fdef92
@ -33,6 +33,7 @@ module Database.Esqueleto.Internal.Sql
|
||||
, unsafeSqlBinOp
|
||||
, unsafeSqlBinOpComposite
|
||||
, unsafeSqlValue
|
||||
, unsafeSqlCastAs
|
||||
, unsafeSqlFunction
|
||||
, unsafeSqlExtractSubField
|
||||
, UnsafeSqlFunctionArgument
|
||||
@ -101,6 +102,7 @@ data CompositeKeyError =
|
||||
| FoldHelpError
|
||||
| SqlCaseError
|
||||
| SqlBinOpError
|
||||
| SqlCastAsError
|
||||
| MakeOnClauseError
|
||||
| MakeExcError
|
||||
| MakeSetError
|
||||
@ -765,6 +767,14 @@ unsafeSqlFunctionParens name arg =
|
||||
uncommas' $ map (\(ERaw p f) -> first (parensM p) (f info)) $ toArgList arg
|
||||
in (name <> parens argsTLB, argsVals)
|
||||
|
||||
-- | (Internal) An explicit SQL type cast using CAST(value as type).
|
||||
-- See 'unsafeSqlBinOp' for warnings.
|
||||
unsafeSqlCastAs :: T.Text -> SqlExpr (Value a) -> SqlExpr (Value b)
|
||||
unsafeSqlCastAs t (ERaw p f) =
|
||||
ERaw Never $ \info ->
|
||||
let (b, v) = f info
|
||||
in ("CAST" <> parens ( parensM p b <> " AS " <> TLB.fromText t), v )
|
||||
unsafeSqlCastAs _ (ECompositeKey _) = throw (CompositeKeyErr SqlCastAsError)
|
||||
|
||||
class UnsafeSqlFunctionArgument a where
|
||||
toArgList :: a -> [SqlExpr (Value ())]
|
||||
|
||||
Loading…
Reference in New Issue
Block a user