rds-data-0.0.0.2: polysemy/Data/RdsData/Polysemy/Migration.hs
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE TypeApplications #-}
module Data.RdsData.Polysemy.Migration
( migrateDown,
migrateUp,
) where
import qualified Amazonka.Env as AWS
import qualified Amazonka.Types as AWS
import Data.Generics.Product.Any
import Data.RdsData.Aws
import Data.RdsData.Migration.Types hiding (id)
import Data.RdsData.Polysemy.Core
import Data.RdsData.Polysemy.Error
import HaskellWorks.Polysemy
import HaskellWorks.Polysemy.Amazonka
import HaskellWorks.Polysemy.File
import HaskellWorks.Polysemy.Prelude
import Lens.Micro
migrateDown :: ()
=> Member (DataLog AwsLogEntry) r
=> Member (Embed IO) r
=> Member (Error AWS.Error) r
=> Member (Error IOException) r
=> Member (Error JsonDecodeError) r
=> Member (Error RdsDataError) r
=> Member (Error YamlDecodeError) r
=> Member (Reader AWS.Env) r
=> Member (Reader AwsResourceArn) r
=> Member (Reader AwsSecretArn) r
=> Member Log r
=> Member Resource r
=> FilePath
-> Sem r ()
migrateDown migrationFp = do
value :: Migration <- readYamlFile migrationFp
let statements = value ^.. the @"plan" . to reverse . each . the @"down" . each
forM_ statements $ \statement -> do
info $ "Executing statement: " <> tshow statement
executeStatement (statement ^. the @1)
migrateUp :: ()
=> Member (DataLog AwsLogEntry) r
=> Member (Embed IO) r
=> Member (Error AWS.Error) r
=> Member (Error IOException) r
=> Member (Error JsonDecodeError) r
=> Member (Error RdsDataError) r
=> Member (Error YamlDecodeError) r
=> Member (Reader AWS.Env) r
=> Member (Reader AwsResourceArn) r
=> Member (Reader AwsSecretArn) r
=> Member Log r
=> Member Resource r
=> FilePath
-> Sem r ()
migrateUp migrationFp = do
value :: Migration <- readYamlFile migrationFp
let statements = value ^.. the @"plan" . each . the @"up" . each
forM_ statements $ \statement -> do
info $ "Executing statement: " <> tshow statement
executeStatement (statement ^. the @1)