2 Module : Gargantext.API.Dev
4 Copyright : (c) CNRS, 2017-Present
5 License : AGPL + CECILL v3
6 Maintainer : team@gargantext.org
7 Stability : experimental
12 -- Use only for dev/repl
13 module Gargantext.API.Dev where
15 import Control.Exception (finally)
16 import Control.Monad (fail)
17 import Control.Monad.Reader (runReaderT)
18 import Gargantext.API.Admin.EnvTypes
19 import Gargantext.API.Admin.Settings
20 import Gargantext.API.Ngrams (saveNodeStory)
21 import Gargantext.API.Prelude
22 import Gargantext.Core.NodeStory
23 import Gargantext.Database.Prelude
24 import Gargantext.Prelude
25 import Gargantext.Prelude.Config (GargConfig(..), readConfig)
27 import System.IO (FilePath)
29 type IniPath = FilePath
30 -------------------------------------------------------------------
31 withDevEnv :: IniPath -> (DevEnv -> IO a) -> IO a
32 withDevEnv iniPath k = do
34 k env -- `finally` cleanEnv env
38 cfg <- readConfig iniPath
39 dbParam <- databaseParameters iniPath
40 nodeStory_env <- readNodeStoryEnv (_gc_repofilepath cfg)
41 pool <- newPool dbParam
42 setts <- devSettings devJwkFile
44 { _dev_env_pool = pool
45 , _dev_env_nodeStory = nodeStory_env
46 , _dev_env_settings = setts
47 , _dev_env_config = cfg
50 -- | Run Cmd Sugar for the Repl (GHCI)
51 runCmdRepl :: Show err => Cmd'' DevEnv err a -> IO a
52 runCmdRepl f = withDevEnv "gargantext.ini" $ \env -> runCmdDev env f
54 runCmdReplServantErr :: Cmd'' DevEnv ServerError a -> IO a
55 runCmdReplServantErr = runCmdRepl
57 -- In particular this writes the repo file after running
59 -- This function is constrained to the DevEnv rather than
60 -- using HasConnectionPool and HasRepoVar.
61 runCmdDev :: (Show err) => DevEnv -> Cmd'' DevEnv err a -> IO a
63 (either (fail . show) pure =<< runCmd env f)
65 runReaderT saveNodeStory env
67 runCmdDevNoErr :: DevEnv -> Cmd' DevEnv () a -> IO a
68 runCmdDevNoErr = runCmdDev
70 runCmdDevServantErr :: DevEnv -> Cmd' DevEnv ServerError a -> IO a
71 runCmdDevServantErr = runCmdDev
73 runCmdReplEasy :: Cmd'' DevEnv GargError a -> IO a
74 runCmdReplEasy f = withDevEnv "gargantext.ini" $ \env -> runCmdDev env f