rds-data 0.0.0.7 → 0.0.0.8
raw patch · 7 files changed
+41/−11 lines, 7 filesdep ~hw-polysemy
Dependency ranges changed: hw-polysemy
Files
- app/App/Cli/Run/LocalStack.hs +2/−1
- integration/Test/Data/RdsData/Migration/ConnectionSpec.hs +2/−1
- polysemy/Data/RdsData/Polysemy/Core.hs +7/−3
- polysemy/Data/RdsData/Polysemy/Migration.hs +13/−1
- rds-data.cabal +6/−5
- src/Data/RdsData/Default.hs +10/−0
- src/Data/RdsData/Migration/Types.hs +1/−0
app/App/Cli/Run/LocalStack.hs view
@@ -27,6 +27,7 @@ import Data.Acquire (ReleaseType (ReleaseNormal)) import Data.Generics.Product.Any import Data.RdsData.Aws+import Data.RdsData.Default import Data.RdsData.Polysemy.Test.Cluster import Data.RdsData.Polysemy.Test.Env import GHC.IORef (IORef)@@ -85,7 +86,7 @@ -> IO (TC.Container, IO.InternalState) startContainers tcConfig = TC.runTestContainer tcConfig do- result <- setupContainers+ result <- setupContainers' projectDefaultLocalStack releaseMap <- IO.liftResourceT IO.getInternalState -- N.B. runResourceT runs the finalizers on every resource. We don't want it to! We want to run
integration/Test/Data/RdsData/Migration/ConnectionSpec.hs view
@@ -18,6 +18,7 @@ import Data.Function import Data.Generics.Product.Any import qualified Data.List as L+import Data.RdsData.Default import Data.RdsData.Polysemy.Core import Data.RdsData.Polysemy.Error import Data.RdsData.Polysemy.Migration@@ -37,7 +38,7 @@ -- cabal test rds-data-test --test-options "--pattern \"/RDS integration test/\"" tasty_rds_integration_test :: Tasty.TestTree tasty_rds_integration_test =- TC.withContainers (setupContainers' "localstack/localstack-pro:3.7.2") $ \getContainer ->+ TC.withContainers (setupContainers' projectDefaultLocalStack) $ \getContainer -> H.testProperty "RDS integration test" $ propertyOnce $ localWorkspace "rds-data" $ runLocalTestEnv getContainer $ do rdsClusterDetails <- createRdsDbCluster "rds_data_migration" getContainer
polysemy/Data/RdsData/Polysemy/Core.hs view
@@ -52,6 +52,7 @@ & the @"database" .~ (context ^? the @"database" . _Just . the @1) executeStatement :: ()+ => HasCallStack => Member (DataLog AwsLogEntry) r => Member (Embed m) r => Member (Error AWS.Error) r@@ -63,7 +64,7 @@ => MonadIO m => Text -> Sem r AWS.ExecuteStatementResponse-executeStatement sql = do+executeStatement sql = withFrozenCallStack do res <- newExecuteStatement sql >>= sendAws case res ^. the @"httpStatus" of@@ -73,6 +74,7 @@ _ -> throw $ RdsDataError $ "Failed to initialise database: " <> tshow res executeStatement_ :: ()+ => HasCallStack => Member (DataLog AwsLogEntry) r => Member (Embed m) r => Member (Error AWS.Error) r@@ -84,9 +86,11 @@ => MonadIO m => Text -> Sem r ()-executeStatement_ = void . executeStatement+executeStatement_ f = withFrozenCallStack do+ void $ executeStatement f initialiseDb :: ()+ => HasCallStack => Member (DataLog AwsLogEntry) r => Member (Embed m) r => Member (Error AWS.Error) r@@ -97,7 +101,7 @@ => Member Resource r => MonadIO m => Sem r ()-initialiseDb = do+initialiseDb = withFrozenCallStack do executeStatement_ $ mconcat [ "CREATE TABLE IF NOT EXISTS migration (" , " ulid CHAR(26) NOT NULL PRIMARY KEY,"
polysemy/Data/RdsData/Polysemy/Migration.hs view
@@ -113,12 +113,15 @@ columnClauses <- pure $ createTableStatement ^.. the @"createTable" . the @"columns" . each . to columnToText + primaryKeyClause <- pure $+ createTableStatement ^.. the @"createTable" . the @"primaryKey" . _Just . to primaryKeyToText+ constraintClauses <- pure $ createTableStatement ^.. the @"createTable" . the @"constraints" . _Just . each . to constraintToText statement <- pure $ mconcat [ "CREATE TABLE " <> createTableStatement ^. the @"createTable" . the @"name" <> " ("- , mconcat $ L.intersperse ", " (columnClauses <> constraintClauses)+ , mconcat $ L.intersperse ", " (columnClauses <> primaryKeyClause <> constraintClauses) , ");\n" ] @@ -169,6 +172,15 @@ ] & T.intercalate " " | Just fk <- [c ^. the @"references"] ]+ ]++primaryKeyToText :: [Text] -> Text+primaryKeyToText cs =+ T.intercalate " "+ [ "PRIMARY KEY"+ , "("+ , T.intercalate ", " cs+ , ")" ] constraintToText :: Constraint -> Text
rds-data.cabal view
@@ -1,7 +1,7 @@ cabal-version: 3.6 name: rds-data-version: 0.0.0.7+version: 0.0.0.8 synopsis: Codecs for use with AWS rds-data description: Codecs for use with AWS rds-data. category: Data@@ -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.2.14.5 && < 0.3 }-common hw-polysemy-core { build-depends: hw-polysemy:core >= 0.2.14.5 && < 0.3 }-common hw-polysemy-hedgehog { build-depends: hw-polysemy:hedgehog >= 0.2.14.5 && < 0.3 }-common hw-polysemy-testcontainers-localstack { build-depends: hw-polysemy:testcontainers-localstack >= 0.2.14.5 && < 0.3 }+common hw-polysemy-amazonka { build-depends: hw-polysemy:amazonka >= 0.2.14.6 && < 0.3 }+common hw-polysemy-core { build-depends: hw-polysemy:core >= 0.2.14.6 && < 0.3 }+common hw-polysemy-hedgehog { build-depends: hw-polysemy:hedgehog >= 0.2.14.6 && < 0.3 }+common hw-polysemy-testcontainers-localstack { build-depends: hw-polysemy:testcontainers-localstack >= 0.2.14.6 && < 0.3 } common microlens { build-depends: microlens >= 0.4.13 && < 0.5 } common mtl { build-depends: mtl >= 2 && < 3 } common optparse-applicative { build-depends: optparse-applicative >= 0.18.1.0 && < 0.19 }@@ -103,6 +103,7 @@ Data.RdsData.Decode.Array Data.RdsData.Decode.Row Data.RdsData.Decode.Value+ Data.RdsData.Default Data.RdsData.Encode.Array Data.RdsData.Encode.Param Data.RdsData.Encode.Params
+ src/Data/RdsData/Default.hs view
@@ -0,0 +1,10 @@+{-# LANGUAGE OverloadedStrings #-}++module Data.RdsData.Default+ ( projectDefaultLocalStack+ ) where++import Data.Text++projectDefaultLocalStack :: Text+projectDefaultLocalStack = "localstack/localstack-pro:3.7.2"
src/Data/RdsData/Migration/Types.hs view
@@ -176,6 +176,7 @@ data TableSchema = TableSchema { name :: Text , columns :: [Column]+ , primaryKey :: Maybe [Text] , constraints :: Maybe [Constraint] } deriving (Eq, Generic, Show)