rds-data-codecs-0.0.0.1: app/App/Cli/Run/ExecuteStatement.hs
{-# LANGUAGE BlockArguments #-}
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE TypeApplications #-}
module App.Cli.Run.ExecuteStatement
( runExecuteStatementCmd
) where
import Amazonka.RDSData
import App.AWS.Env
import App.Config
import Control.Lens
import Control.Monad.IO.Class
import Data.Generics.Product.Any
import qualified App.Cli.Types as CLI
import qualified Amazonka as AWS
import qualified Data.Aeson as J
import qualified Data.ByteString.Lazy as LBS
import qualified Data.Text.Encoding as T
import qualified Data.Text.IO as T
import qualified System.IO.Unsafe as IO
runExecuteStatementCmd :: CLI.ExecuteStatementCmd -> IO ()
runExecuteStatementCmd cmd = do
let theAwsLogLevel = cmd ^. the @"mAwsLogLevel"
let theMHostEndpoint = cmd ^. the @"mHostEndpoint"
let theRegion = cmd ^. the @"region"
let theResourceArn = cmd ^. the @"resourceArn"
let theSecretArn = cmd ^. the @"secretArn"
let theSql = cmd ^. the @"sql"
envAws <-
liftIO (IO.unsafeInterleaveIO (mkEnv theRegion (awsLogger theAwsLogLevel)))
<&> applyMHostEndpoint theMHostEndpoint
let req = newExecuteStatement theResourceArn theSecretArn theSql
AWS.runResourceT $ do
res <- AWS.send envAws req
liftIO . T.putStrLn $ T.decodeUtf8 $ LBS.toStrict $ J.encode res