diff --git a/Stackage/Database.hs b/Stackage/Database.hs index bba0a20..0ea0e93 100644 --- a/Stackage/Database.hs +++ b/Stackage/Database.hs @@ -4,6 +4,7 @@ module Stackage.Database , SnapName (..) , SnapshotId () , Snapshot (..) + , closeStackageDatabase , newestSnapshot , newestLTS , newestLTSMajor @@ -73,6 +74,7 @@ import qualified Database.Esqueleto as E import Data.Yaml (decode) import qualified Data.Aeson as A import Types (SnapshotBranch(..)) +import Data.Pool (destroyAllResources) currentSchema :: Int currentSchema = 1 @@ -153,6 +155,9 @@ _hideUnusedWarnings _ = () newtype StackageDatabase = StackageDatabase ConnectionPool +closeStackageDatabase :: StackageDatabase -> IO () +closeStackageDatabase (StackageDatabase pool) = destroyAllResources pool + class MonadIO m => GetStackageDatabase m where getStackageDatabase :: m StackageDatabase instance MonadIO m => GetStackageDatabase (ReaderT StackageDatabase m) where diff --git a/Stackage/Database/Cron.hs b/Stackage/Database/Cron.hs index 5526765..856ad7a 100644 --- a/Stackage/Database/Cron.hs +++ b/Stackage/Database/Cron.hs @@ -106,6 +106,7 @@ loadFromS3 develMode man = do -- give existing users a chance to clean up threadDelay $ 1000000 * 30 void $ tryIO $ removeFile (fromString fp) + closeStackageDatabase db return oldKill update diff --git a/stackage-server.cabal b/stackage-server.cabal index f732ac2..e3b24d9 100644 --- a/stackage-server.cabal +++ b/stackage-server.cabal @@ -184,6 +184,7 @@ library , amazonka-s3 >= 1.3 && < 1.5 , lens >= 4.13 && < 4.14 , file-embed + , resource-pool executable stackage-server if flag(library-only)