Interpolate json string values in queries without extra quoting

This commit is contained in:
Joe Nelson
2014-12-06 17:42:19 -08:00
parent dd2adf4daa
commit b74b91b1c0
+6 -2
View File
@@ -13,7 +13,7 @@ import Data.Maybe (fromMaybe, mapMaybe)
import Data.Functor ( (<$>) )
import Control.Monad (join)
import Data.String.Conversions (cs)
import Data.Aeson.Types (Value)
import Data.Aeson (Value(..), encode)
import qualified Data.List as L
type CompleteQuery = (Query, [Action])
@@ -96,9 +96,13 @@ insertInto t cols vals =
Query (BS.intercalate ", " (map (const "?") vals)) <>
") returning *"
, [EscapeIdentifier (qtSchema t), EscapeIdentifier (qtName t)]
++ map EscapeIdentifier cols ++ map toField vals
++ map EscapeIdentifier cols ++ map (Escape . rawJsonValue) vals
)
rawJsonValue :: Value -> BS.ByteString
rawJsonValue (String s) = cs s
rawJsonValue v = cs $ encode v
update :: QualifiedTable -> [BS.ByteString] -> [Value] ->
CompleteQuery
update t cols vals =