module Hix.Managed.Handlers.Hackage.Prod where import Data.IORef (newIORef) import Hix.Data.Version (SourceHash) import Hix.Hackage (fetchHashHackageCached) import qualified Hix.Managed.Handlers.Hackage import Hix.Managed.Handlers.Hackage (HackageHandlers (HackageHandlers)) handlersProdWith :: MonadIO m => Map Text SourceHash -> m HackageHandlers handlersProdWith :: forall (m :: * -> *). MonadIO m => Map Text SourceHash -> m HackageHandlers handlersProdWith Map Text SourceHash initial = do IORef (Map Text SourceHash) hashCache <- IO (IORef (Map Text SourceHash)) -> m (IORef (Map Text SourceHash)) forall a. IO a -> m a forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO (Map Text SourceHash -> IO (IORef (Map Text SourceHash)) forall a. a -> IO (IORef a) newIORef Map Text SourceHash initial) pure HackageHandlers { fetchHash :: PackageId -> M SourceHash fetchHash = IORef (Map Text SourceHash) -> PackageId -> M SourceHash fetchHashHackageCached IORef (Map Text SourceHash) hashCache } handlersProd :: MonadIO m => m HackageHandlers handlersProd :: forall (m :: * -> *). MonadIO m => m HackageHandlers handlersProd = Map Text SourceHash -> m HackageHandlers forall (m :: * -> *). MonadIO m => Map Text SourceHash -> m HackageHandlers handlersProdWith Map Text SourceHash forall a. Monoid a => a mempty