From 21013d7e40d1e513fb160727536921291591bcb4 Mon Sep 17 00:00:00 2001 From: Mats Rauhala Date: Wed, 20 Apr 2022 20:29:04 +0300 Subject: [PATCH] Run forever --- src/MyLib.hs | 27 ++++++++++++++++++--------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/src/MyLib.hs b/src/MyLib.hs index dc448e6..3c0df08 100644 --- a/src/MyLib.hs +++ b/src/MyLib.hs @@ -2,20 +2,25 @@ {-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE DerivingVia #-} +{-# LANGUAGE NumericUnderscores #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE TypeOperators #-} module MyLib (defaultMain) where +import Control.Concurrent (threadDelay) import Control.Exception (bracket) import Control.Lens -import Control.Monad (void) +import Control.Monad (forever, void) import Data.Aeson (FromJSON, ToJSON, Value) import qualified Data.Aeson as A +import Data.Aeson.Lens (_String, key) +import Data.Bool (bool) import Data.Config import Data.Deriving.Aeson import Data.Foldable (for_) import Data.Functor.Contravariant ((>$<)) import Data.Text (Text) +import qualified Data.Text.IO as TI import qualified Data.Text.Strict.Lens as T import qualified Database.SQLite.Simple as SQL import GHC.Generics (Generic) @@ -23,19 +28,21 @@ import qualified Membership import Network.AMQP ( Channel , DeliveryMode(Persistent) + , closeConnection + , declareExchange , exchangeName , exchangeType , msgBody , msgDeliveryMode + , newExchange , newMsg - , publishMsg, openConnection, closeConnection, openChannel, newExchange, declareExchange + , openChannel + , openConnection + , publishMsg ) -import Network.Reddit (RedditId (RedditId), publishEntries) +import Network.Reddit (RedditId(RedditId), publishEntries) import Network.Wreq.Session (newSession) import Publish (Publish(..)) -import Data.Aeson.Lens (key, _String) -import Data.Bool (bool) -import qualified Data.Text.IO as TI data MessageType = Create | Update deriving stock (Show, Eq, Generic) @@ -86,9 +93,11 @@ defaultMain path = do let encoder = amqpPublisher sqlConn chan "reddit_posts" recorder = sqlRecorder sqlConn publisher = encoder <> (messageIdentifier >$< recorder) - for_ (conf ^. fetchers) $ \fetcher -> do - print fetcher - publishEntries (toMessage >$< publisher) sess fetcher + forever $ do + for_ (conf ^. fetchers) $ \fetcher -> do + print fetcher + publishEntries (toMessage >$< publisher) sess fetcher + threadDelay (15 * 60_000_000) getPassword :: Password -> IO Text getPassword (Password p) = pure p