From bd762cb64b8755994b2d0fb90647321bcaaa0997 Mon Sep 17 00:00:00 2001 From: Echo Nolan Date: Mon, 27 Nov 2017 11:20:32 -0800 Subject: [PATCH 1/2] Allow Postgres migrations to enable extensions --- .../Database/Persist/Postgresql.hs | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/persistent-postgresql/Database/Persist/Postgresql.hs b/persistent-postgresql/Database/Persist/Postgresql.hs index 933188f8c..fa9677618 100644 --- a/persistent-postgresql/Database/Persist/Postgresql.hs +++ b/persistent-postgresql/Database/Persist/Postgresql.hs @@ -4,6 +4,7 @@ {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE GADTs #-} {-# LANGUAGE OverloadedStrings #-} +{-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE TypeFamilies #-} {-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE ViewPatterns #-} @@ -26,6 +27,7 @@ module Database.Persist.Postgresql , tableName , fieldName , mockMigration + , migrateEnableExtension ) where import Database.Persist.Sql @@ -74,7 +76,7 @@ import Data.Aeson import Data.Aeson.Types (modifyFailure) import Control.Monad (forM) import Control.Monad.Trans.Reader (runReaderT) -import Control.Monad.Trans.Writer (runWriterT) +import Control.Monad.Trans.Writer (WriterT(..), runWriterT) import Data.Acquire (Acquire, mkAcquire, with) import System.Environment (getEnvironment) import Data.Int (Int64) @@ -1178,3 +1180,13 @@ mockMigration mig = do result = runReaderT $ runWriterT $ runWriterT mig resp <- result sqlbackend mapM_ T.putStrLn $ map snd $ snd resp + +-- | Enable a Postgres extension. See https://www.postgresql.org/docs/10/static/contrib.html +-- for a list. +migrateEnableExtension :: Text -> Migration +migrateEnableExtension extName = WriterT $ WriterT $ do + res :: [Single Int] <- + rawSql "SELECT COUNT(*) FROM pg_catalog.pg_extension WHERE extname = ?" [PersistText extName] + if res == [Single 0] + then return (((), []) , [(False, "CREATe EXTENSION \"" <> extName <> "\"")]) + else return (((), []), []) From 68e754abc39fa3e11a7d02af6caf868267b84db0 Mon Sep 17 00:00:00 2001 From: Echo Nolan Date: Fri, 22 Dec 2017 14:07:14 -0800 Subject: [PATCH 2/2] Update ChangeLog and set new version for Postgres library --- persistent-postgresql/ChangeLog.md | 4 ++++ persistent-postgresql/persistent-postgresql.cabal | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/persistent-postgresql/ChangeLog.md b/persistent-postgresql/ChangeLog.md index d0f990d3c..d57322f52 100644 --- a/persistent-postgresql/ChangeLog.md +++ b/persistent-postgresql/ChangeLog.md @@ -1,3 +1,7 @@ +## 2.6.3 + +* Added new function `migrateEnableExtension`, to enable Postgres extensions in migrations. + ## 2.6.2.1 * Fix bug where, if a custom column width was set, the field would be migrated every time [#742](https://github.com/yesodweb/persistent/pull/742) diff --git a/persistent-postgresql/persistent-postgresql.cabal b/persistent-postgresql/persistent-postgresql.cabal index a94884bf1..696edc67d 100644 --- a/persistent-postgresql/persistent-postgresql.cabal +++ b/persistent-postgresql/persistent-postgresql.cabal @@ -1,5 +1,5 @@ name: persistent-postgresql -version: 2.6.2.1 +version: 2.6.3 license: MIT license-file: LICENSE author: Felipe Lessa, Michael Snoyman