rds-data 0.1.1.1 → 0.1.1.2
raw patch · 7 files changed
+72/−66 lines, 7 filesdep ~hw-polysemy
Dependency ranges changed: hw-polysemy
Files
- app/App/Cli/Run/LocalStack.hs +0/−1
- integration/Test/Data/RdsData/Migration/ConnectionSpec.hs +63/−53
- polysemy/Data/RdsData/Polysemy/Core.hs +0/−1
- rds-data.cabal +6/−6
- src/Data/RdsData/Decode/Value.hs +1/−2
- src/Data/RdsData/Encode/Param.hs +1/−2
- test/Data/RdsDataSpec.hs +1/−1
app/App/Cli/Run/LocalStack.hs view
@@ -21,7 +21,6 @@ import qualified Control.Concurrent as IO import qualified Control.Concurrent.STM as IO import qualified Control.Exception as IO-import Control.Monad.IO.Class (MonadIO (..)) import qualified Control.Monad.Trans.Resource as IO import qualified Control.Monad.Trans.Resource.Internal as IO import Data.Acquire (ReleaseType (ReleaseNormal))
integration/Test/Data/RdsData/Migration/ConnectionSpec.hs view
@@ -31,74 +31,84 @@ import HaskellWorks.Polysemy.Prelude import HaskellWorks.TestContainers.LocalStack import Lens.Micro+import qualified System.Info as OS import qualified Test.Tasty as Tasty import qualified Test.Tasty.Hedgehog as H import qualified TestContainers.Tasty as TC +isWindows :: Bool+isWindows = OS.os == "mingw32"++isMacos :: Bool+isMacos = OS.os == "darwin"+ -- cabal test rds-data-test --test-options "--pattern \"/RDS integration test/\"" tasty_rds_integration_test :: Tasty.TestTree tasty_rds_integration_test =- TC.withContainers (setupContainers' projectDefaultLocalStack) $ \getContainer ->- H.testProperty "RDS integration test" $ propertyOnce $ localWorkspace "rds-data" $ runLocalTestEnv getContainer $ do- rdsClusterDetails <- createRdsDbCluster "rds_data_migration" getContainer+ if isWindows || isMacos+ then Tasty.testGroup "LocalStackSpec skipped on Windows and MacOS" []+ else+ TC.withContainers (setupContainers' projectDefaultLocalStack) $ \getContainer ->+ H.testProperty "RDS integration test" $ propertyOnce $ localWorkspace "rds-data" $ runLocalTestEnv getContainer $ do+ rdsClusterDetails <- createRdsDbCluster "rds_data_migration" getContainer - dbClusterArn <- rdsClusterDetails ^. the @"createDbClusterResponse" . the @"dbCluster" . _Just . the @"dbClusterArn"- & nothingFail+ dbClusterArn <- rdsClusterDetails ^. the @"createDbClusterResponse" . the @"dbCluster" . _Just . the @"dbClusterArn"+ & nothingFail - runReaderStatementContextFromClusterDetails rdsClusterDetails $ do- waitUntilRdsDbClusterAvailable dbClusterArn- & trapFail @AWS.Error- & jotShowDataLog @AwsLogEntry+ runReaderStatementContextFromClusterDetails rdsClusterDetails $ do+ waitUntilRdsDbClusterAvailable dbClusterArn+ & trapFail @AWS.Error+ & jotShowDataLog @AwsLogEntry - initialiseDb- & trapFail @RdsDataError- & trapFail @AWS.Error- & jotShowDataLog @AwsLogEntry+ initialiseDb+ & trapFail @RdsDataError+ & trapFail @AWS.Error+ & jotShowDataLog @AwsLogEntry - migrateUp "db/migration.yaml"- & trapFail @AWS.Error- & trapFail @IOException- & trapFail @JsonDecodeError- & trapFail @RdsDataError- & trapFail @YamlDecodeError- & jotShowDataLog+ migrateUp "db/migration.yaml"+ & trapFail @AWS.Error+ & trapFail @IOException+ & trapFail @JsonDecodeError+ & trapFail @RdsDataError+ & trapFail @YamlDecodeError+ & jotShowDataLog - upResult <-- ( executeStatement $ mconcat- [ "SELECT table_name"- , " FROM information_schema.tables"- , " WHERE table_schema = 'public'"- , " AND table_type = 'BASE TABLE';"- ]- )- & trapFail @AWS.Error- & trapFail @RdsDataError- & jotShowDataLog+ upResult <-+ ( executeStatement $ mconcat+ [ "SELECT table_name"+ , " FROM information_schema.tables"+ , " WHERE table_schema = 'public'"+ , " AND table_type = 'BASE TABLE';"+ ]+ )+ & trapFail @AWS.Error+ & trapFail @RdsDataError+ & jotShowDataLog - let upTables = upResult ^.. the @"records" . each . each . each . the @"stringValue" . _Just+ let upTables = upResult ^.. the @"records" . each . each . each . the @"stringValue" . _Just - L.sort upTables === ["examples", "migration", "projects", "users"]+ L.sort upTables === ["examples", "migration", "projects", "users"] - migrateDown "db/migration.yaml"- & trapFail @AWS.Error- & trapFail @IOException- & trapFail @JsonDecodeError- & trapFail @RdsDataError- & trapFail @YamlDecodeError- & jotShowDataLog+ migrateDown "db/migration.yaml"+ & trapFail @AWS.Error+ & trapFail @IOException+ & trapFail @JsonDecodeError+ & trapFail @RdsDataError+ & trapFail @YamlDecodeError+ & jotShowDataLog - downResult <-- ( executeStatement $ mconcat- [ "SELECT table_name"- , " FROM information_schema.tables"- , " WHERE table_schema = 'public'"- , " AND table_type = 'BASE TABLE'"- ]- )- & trapFail @AWS.Error- & trapFail @RdsDataError- & jotShowDataLog+ downResult <-+ ( executeStatement $ mconcat+ [ "SELECT table_name"+ , " FROM information_schema.tables"+ , " WHERE table_schema = 'public'"+ , " AND table_type = 'BASE TABLE'"+ ]+ )+ & trapFail @AWS.Error+ & trapFail @RdsDataError+ & jotShowDataLog - let downTables = downResult ^.. the @"records" . each . each . each . the @"stringValue" . _Just+ let downTables = downResult ^.. the @"records" . each . each . each . the @"stringValue" . _Just - L.sort downTables === ["migration"]+ L.sort downTables === ["migration"]
polysemy/Data/RdsData/Polysemy/Core.hs view
@@ -16,7 +16,6 @@ import qualified Amazonka.RDSData.BatchExecuteStatement as AWS import qualified Amazonka.RDSData.ExecuteStatement as AWS import qualified Amazonka.Types as AWS-import Control.Monad.IO.Class (MonadIO) import Data.Generics.Product.Any import Data.RdsData.Aws import Data.RdsData.Polysemy.Error
rds-data.cabal view
@@ -1,7 +1,7 @@ cabal-version: 3.6 name: rds-data-version: 0.1.1.1+version: 0.1.1.2 synopsis: Codecs for use with AWS rds-data description: Codecs for use with AWS rds-data. category: Data@@ -13,7 +13,7 @@ copyright: 2024 John Ky license: BSD-3-Clause license-file: LICENSE-tested-with: GHC == 9.6.6+tested-with: GHC == 9.6.6, GHC == 9.4.8 build-type: Simple extra-source-files: README.md @@ -39,10 +39,10 @@ common hedgehog { build-depends: hedgehog >= 1.4 && < 2 } common hedgehog-extras { build-depends: hedgehog-extras >= 0.6.0.2 && < 0.7 } common http-client { build-depends: http-client >= 0.5.14 && < 0.8 }-common hw-polysemy-amazonka { build-depends: hw-polysemy:amazonka >= 0.3.1 && < 0.4 }-common hw-polysemy-core { build-depends: hw-polysemy:core >= 0.3.1 && < 0.4 }-common hw-polysemy-hedgehog { build-depends: hw-polysemy:hedgehog >= 0.3.1 && < 0.4 }-common hw-polysemy-testcontainers-localstack { build-depends: hw-polysemy:testcontainers-localstack >= 0.3.1 && < 0.4 }+common hw-polysemy-amazonka { build-depends: hw-polysemy:amazonka >= 0.3.1.1 && < 0.4 }+common hw-polysemy-core { build-depends: hw-polysemy:core >= 0.3.1.1 && < 0.4 }+common hw-polysemy-hedgehog { build-depends: hw-polysemy:hedgehog >= 0.3.1.1 && < 0.4 }+common hw-polysemy-testcontainers-localstack { build-depends: hw-polysemy:testcontainers-localstack >= 0.3.1.1 && < 0.4 } common hw-prelude { build-depends: hw-prelude >= 0.0.1.0 && < 0.1 } common microlens { build-depends: microlens >= 0.4.13 && < 0.5 } common mtl { build-depends: mtl >= 2 && < 3 }
src/Data/RdsData/Decode/Value.hs view
@@ -58,7 +58,6 @@ import Data.Word import Prelude hiding (fail, maybe, null) -import qualified Amazonka.Data.ByteString as AWS import qualified Data.Aeson as J import qualified Data.ByteString.Base64 as B64 import qualified Data.ByteString.Base64.Lazy as LB64@@ -248,7 +247,7 @@ bytestring :: DecodeValue ByteString bytestring =- AWS.toBS <$> base64+ unBase64 <$> base64 lazyText :: DecodeValue LT.Text lazyText =
src/Data/RdsData/Encode/Param.hs view
@@ -60,7 +60,6 @@ import Lens.Micro import Prelude hiding (maybe, null) -import qualified Amazonka.Bytes as AWS import qualified Amazonka.Data.Base64 as AWS import qualified Amazonka.RDSData as AWS import qualified Data.Aeson as J@@ -179,7 +178,7 @@ bytestring :: EncodeParam ByteString bytestring =- (AWS.Base64 . AWS.encodeBase64) >$< base64+ AWS.Base64 >$< base64 lazyBytestring :: EncodeParam LBS.ByteString lazyBytestring =
test/Data/RdsDataSpec.hs view
@@ -79,7 +79,7 @@ { TT.bigint = 1234567890 , TT.bigserial = 1 , TT.boolean = True- , TT.bytea = "EjQ="+ , TT.bytea = "\DC24" , TT.character = "A" , TT.characters = "AB" , TT.varyingCharacter = "C"