rds-data 0.1.1.0 → 0.1.1.1
raw patch · 6 files changed
+65/−17 lines, 6 files
Files
- rds-data.cabal +4/−1
- src/Data/RdsData/Decode/Row.hs +6/−4
- src/Data/RdsData/Decode/ToRows.hs +19/−0
- src/Data/RdsData/Encode/Params.hs +1/−12
- src/Data/RdsData/Encode/ToSqlParameters.hs +18/−0
- src/Data/RdsData/Types/EncodedParams.hs +17/−0
rds-data.cabal view
@@ -1,7 +1,7 @@ cabal-version: 3.6 name: rds-data-version: 0.1.1.0+version: 0.1.1.1 synopsis: Codecs for use with AWS rds-data description: Codecs for use with AWS rds-data. category: Data@@ -118,12 +118,14 @@ Data.RdsData.Aws Data.RdsData.Decode.Array Data.RdsData.Decode.Row+ Data.RdsData.Decode.ToRows Data.RdsData.Decode.Value Data.RdsData.Default Data.RdsData.Encode.Array Data.RdsData.Encode.Param Data.RdsData.Encode.Params Data.RdsData.Encode.Row+ Data.RdsData.Encode.ToSqlParameters Data.RdsData.Encode.Value Data.RdsData.Internal.Aeson Data.RdsData.Internal.Convert@@ -133,6 +135,7 @@ Data.RdsData.Orphans Data.RdsData.Types Data.RdsData.Types.Array+ Data.RdsData.Types.EncodedParams Data.RdsData.Types.Param Data.RdsData.Types.Value other-modules: Paths_rds_data
src/Data/RdsData/Decode/Row.hs view
@@ -5,6 +5,7 @@ module Data.RdsData.Decode.Row ( DecodeRow(..)+ , ToRows(..) , integer , int , int8@@ -55,6 +56,7 @@ import qualified Data.Aeson as J import qualified Data.ByteString.Lazy as LBS+import Data.RdsData.Decode.ToRows import qualified Data.RdsData.Decode.Value as DV import qualified Data.RdsData.Internal.Convert as CONV import qualified Data.Text as T@@ -62,7 +64,7 @@ import qualified Data.UUID as UUID newtype DecodeRow a = DecodeRow- { unDecodeRow :: ExceptT Text (StateT [Value] Identity) a+ { run :: ExceptT Text (StateT [Value] Identity) a } deriving (Applicative, Functor, Monad, MonadState [Value], MonadError Text) @@ -225,7 +227,7 @@ void $ column DV.rdsValue decodeRow :: DecodeRow a -> [Value] -> Either Text a-decodeRow r = evalState (runExceptT r.unDecodeRow)+decodeRow r = evalState (runExceptT r.run) -decodeRows :: DecodeRow a -> [[Value]] -> Either Text [a]-decodeRows r = traverse (decodeRow r)+decodeRows :: ToRows res => DecodeRow a -> res -> Either Text [a]+decodeRows r = traverse (decodeRow r) . toRows
+ src/Data/RdsData/Decode/ToRows.hs view
@@ -0,0 +1,19 @@+module Data.RdsData.Decode.ToRows+ ( ToRows(..)+ ) where++import qualified Amazonka.RDSData as AWS+import Data.Generics.Product.Any+import Data.Maybe+import Data.RdsData.Types+import Lens.Micro ((^.))++class ToRows a where+ toRows :: a -> [[Value]]++instance ToRows [[Value]] where+ toRows = id++instance ToRows AWS.ExecuteStatementResponse where+ toRows res =+ fromMaybe [] $ mapM (mapM fromField) =<< res ^. the @"records"
src/Data/RdsData/Encode/Params.hs view
@@ -50,6 +50,7 @@ import Data.Int import Data.RdsData.Encode.Array (EncodeArray (..)) import Data.RdsData.Encode.Param (EncodeParam (..))+import Data.RdsData.Types.EncodedParams import Data.RdsData.Types.Param import Data.Text (Text) import Data.Time@@ -65,18 +66,6 @@ import qualified Data.RdsData.Encode.Param as EP import qualified Data.Text.Lazy as LT import qualified Prelude as P--newtype EncodedParams = EncodedParams- { run :: [Param] -> [Param]- }--instance Semigroup EncodedParams where- EncodedParams f <> EncodedParams g =- EncodedParams (f . g)--instance Monoid EncodedParams where- mempty =- EncodedParams id newtype EncodeParams a = EncodeParams { run :: a -> [Param] -> [Param]
+ src/Data/RdsData/Encode/ToSqlParameters.hs view
@@ -0,0 +1,18 @@+module Data.RdsData.Encode.ToSqlParameters+ ( ToSqlParameters(..)+ ) where++import Data.RdsData.Encode.Params+import Data.RdsData.Types.Param++import qualified Amazonka.RDSData as AWS++class ToSqlParameters a where+ toSqlParameters :: a -> [AWS.SqlParameter]++instance ToSqlParameters [AWS.SqlParameter] where+ toSqlParameters = id++instance ToSqlParameters EncodedParams where+ toSqlParameters encodedParams =+ fmap toSqlParameter (encodedParams.run [])
+ src/Data/RdsData/Types/EncodedParams.hs view
@@ -0,0 +1,17 @@+module Data.RdsData.Types.EncodedParams+ ( EncodedParams(..)+ ) where++import Data.RdsData.Types.Param++newtype EncodedParams = EncodedParams+ { run :: [Param] -> [Param]+ }++instance Semigroup EncodedParams where+ EncodedParams f <> EncodedParams g =+ EncodedParams (f . g)++instance Monoid EncodedParams where+ mempty =+ EncodedParams id