Merge branch 'dev-phylo' of https://gitlab.iscpif.fr/gargantext/haskell-gargantext...
[gargantext.git] / src / Gargantext / Database / Utils.hs
index 2ab3213b50cf02872c6f6a932d3cdcdefd776106..843b126e331ec67a5149faa4dae4470467c26db6 100644 (file)
@@ -37,7 +37,6 @@ import Database.PostgreSQL.Simple.FromField ( Conversion, ResultError(Conversion
 import Database.PostgreSQL.Simple.Internal  (Field)
 import Gargantext.Prelude
 import Opaleye (Query, Unpackspec, showSqlForPostgres, FromFields, Select, runQuery)
-import Servant (ServantErr)
 import System.IO (FilePath)
 import Text.Read (read)
 import qualified Data.ByteString      as DB
@@ -49,13 +48,19 @@ class HasConnection env where
 instance HasConnection Connection where
   connection = identity
 
-type CmdM env err m =
+type CmdM' env err m =
   ( MonadReader env m
-  , HasConnection env
   , MonadError err m
   , MonadIO m
   )
 
+type CmdM env err m =
+  ( CmdM' env err m
+  , HasConnection env
+  )
+
+type Cmd' env err a = forall m. CmdM' env err m => m a
+
 type Cmd err a = forall m env. CmdM env err m => m a
 
 -- TODO: ideally there should be very few calls to this functions.
@@ -64,28 +69,10 @@ mkCmd k = do
   conn <- view connection
   liftIO $ k conn
 
-runCmd :: Connection -> Cmd err a -> IO (Either err a)
-runCmd conn m = runExceptT $ runReaderT m conn
-
--- Use only for dev
-runCmdDev :: Show err => Cmd err a -> IO a
-runCmdDev f = do
-  conn <- connectGargandb "gargantext.ini"
-  either (fail . show) pure =<< runCmd conn f
-
-runCmdDevWith :: FilePath -> Cmd ServantErr a -> IO a
-runCmdDevWith fp f = do
-  conn <- connectGargandb fp
-  either (fail . show) pure =<< runCmd conn f
-
-runCmdDevWith' :: Cmd ServantErr a -> IO a
-runCmdDevWith' f = runCmdDevWith "gargantext.ini" f
-
-
-
--- Use only for dev
-runCmdDevNoErr :: Cmd () a -> IO a
-runCmdDevNoErr = runCmdDev
+runCmd :: HasConnection env => env
+       -> Cmd' env err a
+       -> IO (Either err a)
+runCmd env m = runExceptT $ runReaderT m env
 
 runOpaQuery :: Default FromFields fields haskells => Select fields -> Cmd err [haskells]
 runOpaQuery q = mkCmd $ \c -> runQuery c q