diff --git a/rds-data.cabal b/rds-data.cabal index faae7d5..513bab1 100644 --- a/rds-data.cabal +++ b/rds-data.cabal @@ -125,6 +125,7 @@ library codecs 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 @@ -134,6 +135,7 @@ library codecs 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 diff --git a/src/Data/RdsData/Encode/Params.hs b/src/Data/RdsData/Encode/Params.hs index 464b859..93c005f 100644 --- a/src/Data/RdsData/Encode/Params.hs +++ b/src/Data/RdsData/Encode/Params.hs @@ -50,6 +50,7 @@ import Data.Functor.Contravariant.Divisible 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 @@ -66,18 +67,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] } diff --git a/src/Data/RdsData/Encode/ToSqlParameters.hs b/src/Data/RdsData/Encode/ToSqlParameters.hs new file mode 100644 index 0000000..a3e05a8 --- /dev/null +++ b/src/Data/RdsData/Encode/ToSqlParameters.hs @@ -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 []) diff --git a/src/Data/RdsData/Types/EncodedParams.hs b/src/Data/RdsData/Types/EncodedParams.hs new file mode 100644 index 0000000..372f696 --- /dev/null +++ b/src/Data/RdsData/Types/EncodedParams.hs @@ -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