commit
eb76fdef92
@ -33,6 +33,7 @@ module Database.Esqueleto.Internal.Sql
|
|||||||
, unsafeSqlBinOp
|
, unsafeSqlBinOp
|
||||||
, unsafeSqlBinOpComposite
|
, unsafeSqlBinOpComposite
|
||||||
, unsafeSqlValue
|
, unsafeSqlValue
|
||||||
|
, unsafeSqlCastAs
|
||||||
, unsafeSqlFunction
|
, unsafeSqlFunction
|
||||||
, unsafeSqlExtractSubField
|
, unsafeSqlExtractSubField
|
||||||
, UnsafeSqlFunctionArgument
|
, UnsafeSqlFunctionArgument
|
||||||
@ -101,6 +102,7 @@ data CompositeKeyError =
|
|||||||
| FoldHelpError
|
| FoldHelpError
|
||||||
| SqlCaseError
|
| SqlCaseError
|
||||||
| SqlBinOpError
|
| SqlBinOpError
|
||||||
|
| SqlCastAsError
|
||||||
| MakeOnClauseError
|
| MakeOnClauseError
|
||||||
| MakeExcError
|
| MakeExcError
|
||||||
| MakeSetError
|
| MakeSetError
|
||||||
@ -765,6 +767,14 @@ unsafeSqlFunctionParens name arg =
|
|||||||
uncommas' $ map (\(ERaw p f) -> first (parensM p) (f info)) $ toArgList arg
|
uncommas' $ map (\(ERaw p f) -> first (parensM p) (f info)) $ toArgList arg
|
||||||
in (name <> parens argsTLB, argsVals)
|
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
|
class UnsafeSqlFunctionArgument a where
|
||||||
toArgList :: a -> [SqlExpr (Value ())]
|
toArgList :: a -> [SqlExpr (Value ())]
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user