@@ -17,12 +17,12 @@ import Control.Monad.Reader
1717import Network.Wai.Handler.Warp
1818import Network.HTTP.Types.Method
1919import Server.Logger
20−import Control.Concurrent
2120import Data.Faculty.Parser
2221import Data.Connection
2322import Data.Query
2423import Crypto.RNG
2524import Network.Wai.Middleware.Cors
25+import Server.Periodic
2626
2727getDBString :: IO B.ByteString
2828getDBString = do
@@ -53,7 +53,8 @@ runServer :: IO ()
5353runServer = do
5454 port <- getServerPort
5555 cfg <- getConfig
56− void . forkIO $ updateFaculties cfg
56+ _ <- periodically (1 * hours) $ updateFaculties cfg
57+ _ <- periodically (20 * minutes) $ runDbTask cfg pruneAuth
5758 let ctx = genAuthServerContext $ getPool cfg
5859 (middleLogger, logger) <- mkLogger 500
5960 let serverAPI = mkServerAPI logger
@@ -78,4 +79,10 @@ settings port = setPort port . setServerName "Denis" $ defaultSettings
7879updateFaculties :: Config -> IO ()
7980updateFaculties cfg = do
8081 fs <- getFaculties
81− forM_ fs (runHandler . flip runReaderT cfg . runQerror . updateFaculty)
82+ forM_ fs (runTask cfg . runQerror . updateFaculty)
83+
84+runTask :: Config -> App () -> IO ()
85+runTask cfg = void . runHandler . flip runReaderT cfg
86+
87+runDbTask :: Config -> StaticPQ () -> IO ()
88+runDbTask cfg = runTask cfg . runQsilent