[FIX] bug invitation
[gargantext.git] / bin / gargantext-init / Main.hs
index 8be28956a2f73867889723e6099889e48ac8fe6f..a0c3efdbc5ca981fe825a4d6f8a5653982c33214 100644 (file)
@@ -11,44 +11,68 @@ Import a corpus binary.
 
  -}
 
-{-# LANGUAGE NoImplicitPrelude #-}
-{-# LANGUAGE OverloadedStrings #-}
-{-# LANGUAGE FlexibleContexts  #-}
-{-# LANGUAGE RankNTypes        #-}
 {-# LANGUAGE Strict            #-}
 
 module Main where
 
-import System.Environment (getArgs)
-import Gargantext.Prelude
-import Gargantext.Database.Flow (FlowCmdM, flowCorpusFile, getOrMkRoot)
-import Gargantext.Text.Corpus.Parsers (FileFormat(..))
-import Gargantext.Database.Utils (Cmd, )
-import Gargantext.Database.Types.Node (CorpusId, toHyperdataDocument, RootId)
-import Gargantext.Database.Schema.User (insertUsersDemo, UserId)
-import Gargantext.Text.Terms (TermType(..))
-import Gargantext.Core (Lang(..))
-import Gargantext.API.Types (GargError)
-import Gargantext.API.Node () -- instances
-import Gargantext.API.Settings (withDevEnv, runCmdDev, DevEnv)
---import Gargantext.Text.Corpus.Parsers.GrandDebat (readFile, GrandDebatReference(..))
 import Data.Text (Text)
-import qualified Data.Text as Text
-import Control.Monad.IO.Class (liftIO)
+import Data.Either (Either(..))
+import Gargantext.API.Dev (withDevEnv, runCmdDev)
+import Gargantext.API.Prelude (GargError)
+import Gargantext.API.Node () -- instances only
+import Gargantext.Core.Types.Individu (User(..), arbitraryNewUsers, NewUser(..), arbitraryUsername, GargPassword(..))
+import Gargantext.Database.Action.Flow (getOrMkRoot, getOrMk_RootWithCorpus)
+import Gargantext.Database.Query.Table.Node (getOrMkList)
+import Gargantext.Database.Query.Table.User (insertNewUsers, )
+import Gargantext.Database.Admin.Config (userMaster, corpusMasterName)
+import Gargantext.Database.Admin.Types.Node
+import Gargantext.Database.Admin.Trigger.Init (initFirstTriggers, initLastTriggers)
+import Gargantext.Database.Admin.Types.Hyperdata (HyperdataCorpus)
+import Gargantext.Database.Prelude (Cmd, )
+import Gargantext.Prelude
+import System.Environment (getArgs)
+import Prelude (getLine)
+
+-- TODO put this in gargantext.ini
+secret :: Text
+secret = "Database secret to change"
 
 main :: IO ()
 main = do
   [iniPath] <- getArgs
 
+  putStrLn "Enter master user (gargantua) _password_ :"
+  password  <- getLine
+
+  putStrLn "Enter master user (gargantua) _email_ :"
+  email     <- getLine
+
+
   let createUsers :: Cmd GargError Int64
-      createUsers = insertUsersDemo
+      createUsers = insertNewUsers (NewUser "gargantua" (cs email) (GargPassword $ cs password)
+                                   : arbitraryNewUsers
+                                   )
 
   let
-    mkRoots :: Cmd GargError (UserId, RootId)
-    mkRoots = getOrMkRoot "user1"
+    mkRoots :: Cmd GargError [(UserId, RootId)]
+    mkRoots = mapM getOrMkRoot $ map UserName ("gargantua" : arbitraryUsername)
+    -- TODO create all users roots
 
+  let
+    initMaster :: Cmd GargError (UserId, RootId, CorpusId, ListId)
+    initMaster = do
+      (masterUserId, masterRootId, masterCorpusId)
+                  <- getOrMk_RootWithCorpus (UserName userMaster)
+                                            (Left corpusMasterName)
+                                            (Nothing :: Maybe HyperdataCorpus)
+      masterListId <- getOrMkList masterCorpusId masterUserId
+      _triggers    <- initLastTriggers masterListId
+      pure (masterUserId, masterRootId, masterCorpusId, masterListId)
 
   withDevEnv iniPath $ \env -> do
+    _ <- runCmdDev env (initFirstTriggers secret :: Cmd GargError [Int64])
     _ <- runCmdDev env createUsers
+    x <- runCmdDev env initMaster
     _ <- runCmdDev env mkRoots
+    putStrLn $ show x
     pure ()