From b74b91b1c09943aa01457d302d91c90bdbaa2ce2 Mon Sep 17 00:00:00 2001 From: Joe Nelson Date: Thu, 13 Nov 2014 15:41:02 -0800 Subject: [PATCH] Interpolate json string values in queries without extra quoting --- src/PgQuery.hs | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/PgQuery.hs b/src/PgQuery.hs index 4a33246d2..30659650b 100644 --- a/src/PgQuery.hs +++ b/src/PgQuery.hs @@ -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 =