Commit a9044fdc authored by Alexandre Delanoë's avatar Alexandre Delanoë

[Types] NodeStoryEnv ready for integration in API

parent 7fbcddfa
...@@ -20,17 +20,18 @@ import Gargantext.API.Ngrams.Types (HasRepoVar(..), HasRepoSaver(..), HasRepo(.. ...@@ -20,17 +20,18 @@ import Gargantext.API.Ngrams.Types (HasRepoVar(..), HasRepoSaver(..), HasRepo(..
import Gargantext.Database.Prelude (HasConnectionPool(..), HasConfig(..)) import Gargantext.Database.Prelude (HasConnectionPool(..), HasConfig(..))
import Gargantext.Prelude import Gargantext.Prelude
import Gargantext.Prelude.Config (GargConfig(..)) import Gargantext.Prelude.Config (GargConfig(..))
import Gargantext.Core.NodeStory
data Env = Env data Env = Env
{ _env_settings :: !Settings { _env_settings :: !Settings
, _env_logger :: !LoggerSet , _env_logger :: !LoggerSet
, _env_pool :: !(Pool Connection) , _env_pool :: !(Pool Connection)
, _env_repo :: !RepoEnv , _env_repo :: !RepoEnv
, _env_manager :: !Manager , _env_nodeStory :: !NodeStoryEnv
, _env_self_url :: !BaseUrl , _env_manager :: !Manager
, _env_scrapers :: !ScrapersEnv , _env_self_url :: !BaseUrl
, _env_config :: !GargConfig , _env_scrapers :: !ScrapersEnv
, _env_config :: !GargConfig
} }
deriving (Generic) deriving (Generic)
......
...@@ -170,23 +170,25 @@ newEnv port file = do ...@@ -170,23 +170,25 @@ newEnv port file = do
when (port /= settings' ^. appPort) $ when (port /= settings' ^. appPort) $
panic "TODO: conflicting settings of port" panic "TODO: conflicting settings of port"
config_env <- readConfig file config_env <- readConfig file
self_url_env <- parseBaseUrl $ "http://0.0.0.0:" <> show port self_url_env <- parseBaseUrl $ "http://0.0.0.0:" <> show port
dbParam <- databaseParameters file dbParam <- databaseParameters file
pool <- newPool dbParam pool <- newPool dbParam
repo <- readRepoEnv (_gc_repofilepath config_env) repo <- readRepoEnv (_gc_repofilepath config_env)
scrapers_env <- newJobEnv defaultSettings manager_env nodeStory_env <- readNodeStoryEnv (_gc_repofilepath config_env)
logger <- newStderrLoggerSet defaultBufSize scrapers_env <- newJobEnv defaultSettings manager_env
logger <- newStderrLoggerSet defaultBufSize
pure $ Env pure $ Env
{ _env_settings = settings' { _env_settings = settings'
, _env_logger = logger , _env_logger = logger
, _env_pool = pool , _env_pool = pool
, _env_repo = repo , _env_repo = repo
, _env_manager = manager_env , _env_nodeStory = nodeStory_env
, _env_scrapers = scrapers_env , _env_manager = manager_env
, _env_self_url = self_url_env , _env_scrapers = scrapers_env
, _env_config = config_env , _env_self_url = self_url_env
, _env_config = config_env
} }
newPool :: ConnectInfo -> IO (Pool Connection) newPool :: ConnectInfo -> IO (Pool Connection)
......
...@@ -41,8 +41,10 @@ import Control.Debounce (mkDebounce, defaultDebounceSettings, debounceFreq, debo ...@@ -41,8 +41,10 @@ import Control.Debounce (mkDebounce, defaultDebounceSettings, debounceFreq, debo
------------------------------------------------------------------------ ------------------------------------------------------------------------
data NodeStoryEnv = NodeStoryEnv data NodeStoryEnv = NodeStoryEnv
{ _nse_var :: !(Maybe (MVar NodeListStory) -> NodeId -> (IO (MVar NodeListStory))) { _nse_var :: !(MVar NodeListStory)
, _nse_saver :: !(MVar NodeListStory -> (IO (IO ()))) , _nse_saver :: !(IO ())
, _nse_getter :: NodeId -> IO (MVar NodeListStory)
--, _nse_cleaner :: !(IO ()) -- every 12 hours: cleans the repos of unused NodeStories
-- , _nse_lock :: !FileLock -- TODO -- , _nse_lock :: !FileLock -- TODO
} }
deriving (Generic) deriving (Generic)
...@@ -61,8 +63,11 @@ class HasNodeStorySaver env where ...@@ -61,8 +63,11 @@ class HasNodeStorySaver env where
instance Serialise (PatchMap TableNgrams.NgramsType NgramsTablePatch) instance Serialise (PatchMap TableNgrams.NgramsType NgramsTablePatch)
------------------------------------------------------------------------ ------------------------------------------------------------------------
readNodeStoryEnv :: NodeStoryDir -> NodeStoryEnv readNodeStoryEnv :: NodeStoryDir -> IO NodeStoryEnv
readNodeStoryEnv nsd = NodeStoryEnv (nodeStoryVar nsd) (mkNodeStorySaver nsd) readNodeStoryEnv nsd = do
mvar <- nodeStoryVar nsd Nothing 0
saver <- mkNodeStorySaver nsd mvar
pure $ NodeStoryEnv mvar saver (nodeStoryVar nsd (Just mvar))
------------------------------------------------------------------------ ------------------------------------------------------------------------
mkNodeStorySaver :: NodeStoryDir -> MVar NodeListStory -> IO (IO ()) mkNodeStorySaver :: NodeStoryDir -> MVar NodeListStory -> IO (IO ())
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment