2 Module : Gargantext.Database
3 Description : Tools for Database
4 Copyright : (c) CNRS, 2017-Present
5 License : AGPL + CECILL v3
6 Maintainer : team@gargantext.org
7 Stability : experimental
10 Target: just import this module and nothing else to work with
11 Gargantext's database.
13 TODO: configure nodes table in Haskell (Config typenames etc.)
17 module Gargantext.Database.Admin.Config
20 import Control.Lens (view)
21 import Data.List (lookup)
22 import Data.Maybe (fromMaybe)
23 import Data.Text (Text,pack)
24 import Data.Tuple.Extra (swap)
25 import Gargantext.Database.Admin.Types.Node
26 import Gargantext.Database.Schema.Node
27 import Gargantext.Prelude
29 -- TODO put this in config.ini file
30 corpusMasterName :: Text
31 corpusMasterName = "Main"
34 userMaster = "gargantua"
37 userArbitrary = "user1"
39 nodeTypeId :: NodeType -> NodeTypeId
44 NodeFolderPrivate -> 20
45 NodeFolderShared -> 21
47 NodeFolderPublic -> 22
62 -- NodeOccurrences -> 10
85 -- NodeFavorites -> 15
87 hasNodeType :: forall a. Node a -> NodeType -> Bool
88 hasNodeType n nt = (view node_typename n) == (nodeTypeId nt)
90 isInNodeTypes :: forall a. Node a -> [NodeType] -> Bool
91 isInNodeTypes n ts = elem (view node_typename n) (map nodeTypeId ts)
93 -- | Nodes are typed in the database according to a specific ID
95 nodeTypeInv :: [(NodeTypeId, NodeType)]
96 nodeTypeInv = map swap nodeTypes
98 nodeTypes :: [(NodeType, NodeTypeId)]
99 nodeTypes = [ (n, nodeTypeId n) | n <- allNodeTypes ]
101 fromNodeTypeId :: NodeTypeId -> NodeType
102 fromNodeTypeId tId = fromMaybe (panic $ pack $ "Type Id " <> show tId <> " does not exist")
103 (lookup tId nodeTypeInv)