Main.hs 2.63 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
{-|
Module      : Main.hs
Description : Gargantext Import Corpus
Copyright   : (c) CNRS, 2017-Present
License     : AGPL + CECILL v3
Maintainer  : team@gargantext.org
Stability   : experimental
Portability : POSIX

Import a corpus binary.

 -}

{-# LANGUAGE Strict            #-}

module Main where

Alexandre Delanoë's avatar
Alexandre Delanoë committed
18
import Data.Text (Text)
19
import Data.Either (Either(..))
20
import Gargantext.API.Dev (withDevEnv, runCmdDev)
21
import Gargantext.API.Prelude (GargError)
22
import Gargantext.API.Node () -- instances only
23
import Gargantext.Core.Types.Individu (User(..), arbitraryNewUsers, NewUser(..), arbitraryUsername, GargPassword(..))
24
import Gargantext.Database.Action.Flow (getOrMkRoot, getOrMk_RootWithCorpus)
25
import Gargantext.Database.Query.Table.Node (getOrMkList)
26
import Gargantext.Database.Query.Table.User (insertNewUsers, )
27
import Gargantext.Database.Admin.Config (userMaster, corpusMasterName)
28
import Gargantext.Database.Admin.Types.Node
Alexandre Delanoë's avatar
Alexandre Delanoë committed
29
import Gargantext.Database.Admin.Trigger.Init (initFirstTriggers, initLastTriggers)
30
import Gargantext.Database.Admin.Types.Hyperdata (HyperdataCorpus)
31
import Gargantext.Database.Prelude (Cmd, )
32 33
import Gargantext.Prelude
import System.Environment (getArgs)
34
import Prelude (getLine)
35

36
-- TODO put this in gargantext.ini
Alexandre Delanoë's avatar
Alexandre Delanoë committed
37 38 39
secret :: Text
secret = "Database secret to change"

40 41 42 43
main :: IO ()
main = do
  [iniPath] <- getArgs

44 45 46 47 48 49 50
  putStrLn "Enter master user (gargantua) _password_ :"
  password  <- getLine

  putStrLn "Enter master user (gargantua) _email_ :"
  email     <- getLine


51
  let createUsers :: Cmd GargError Int64
52 53 54
      createUsers = insertNewUsers (NewUser "gargantua" (cs email) (GargPassword $ cs password)
                                   : arbitraryNewUsers
                                   )
Alexandre Delanoë's avatar
Alexandre Delanoë committed
55

56
  let
57
    mkRoots :: Cmd GargError [(UserId, RootId)]
58
    mkRoots = mapM getOrMkRoot $ map UserName ("gargantua" : arbitraryUsername)
59
    -- TODO create all users roots
60

61 62 63
  let
    initMaster :: Cmd GargError (UserId, RootId, CorpusId, ListId)
    initMaster = do
64 65 66 67
      (masterUserId, masterRootId, masterCorpusId)
                  <- getOrMk_RootWithCorpus (UserName userMaster)
                                            (Left corpusMasterName)
                                            (Nothing :: Maybe HyperdataCorpus)
68
      masterListId <- getOrMkList masterCorpusId masterUserId
69
      _triggers    <- initLastTriggers masterListId
70
      pure (masterUserId, masterRootId, masterCorpusId, masterListId)
71 72

  withDevEnv iniPath $ \env -> do
Alexandre Delanoë's avatar
Alexandre Delanoë committed
73
    _ <- runCmdDev env (initFirstTriggers secret :: Cmd GargError [Int64])
74
    _ <- runCmdDev env createUsers
75
    x <- runCmdDev env initMaster
Alexandre Delanoë's avatar
Alexandre Delanoë committed
76
    _ <- runCmdDev env mkRoots
77
    putStrLn $ show x
78
    pure ()