Commit 8f4ae06a authored by Alexandre Delanoë's avatar Alexandre Delanoë

[FIX] Missing commit

parents c86157fb 3b646c22
...@@ -16,7 +16,7 @@ DATA_FILEPATH = FILEPATH_TO_CHANGE ...@@ -16,7 +16,7 @@ DATA_FILEPATH = FILEPATH_TO_CHANGE
# Data path to local files # Data path to local files
DATA_FILEPATH = FILEPATH_TO_CHANGE DATA_FILEPATH = FILEPATH_TO_CHANGE
# Data path to local files # Data path to local files (do not use quotes)
REPO_FILEPATH = FILEPATH_TO_CHANGE REPO_FILEPATH = FILEPATH_TO_CHANGE
......
...@@ -34,7 +34,7 @@ module Gargantext.Database.Query.Tree ...@@ -34,7 +34,7 @@ module Gargantext.Database.Query.Tree
import Control.Lens ((^..), at, each, _Just, to, set, makeLenses) import Control.Lens ((^..), at, each, _Just, to, set, makeLenses)
import Control.Monad.Error.Class (MonadError()) import Control.Monad.Error.Class (MonadError())
import Data.List (tail, concat) import Data.List (tail, concat, nub)
import Data.Map (Map, fromListWith, lookup) import Data.Map (Map, fromListWith, lookup)
import Data.Text (Text) import Data.Text (Text)
import Database.PostgreSQL.Simple import Database.PostgreSQL.Simple
...@@ -49,23 +49,27 @@ import Gargantext.Database.Schema.NodeNode (NodeNodePoly(..)) ...@@ -49,23 +49,27 @@ import Gargantext.Database.Schema.NodeNode (NodeNodePoly(..))
import Gargantext.Prelude import Gargantext.Prelude
------------------------------------------------------------------------ ------------------------------------------------------------------------
data DbTreeNode = DbTreeNode { _dt_nodeId :: NodeId data DbTreeNode = DbTreeNode { _dt_nodeId :: NodeId
, _dt_typeId :: Int , _dt_typeId :: Int
, _dt_parentId :: Maybe NodeId , _dt_parentId :: Maybe NodeId
, _dt_name :: Text , _dt_name :: Text
} deriving (Show) } deriving (Show)
makeLenses ''DbTreeNode makeLenses ''DbTreeNode
instance Eq DbTreeNode where
(==) d1 d2 = (==) (_dt_nodeId d1) (_dt_nodeId d2)
------------------------------------------------------------------------ ------------------------------------------------------------------------
data TreeMode = Basic | Advanced data TreeMode = Basic | Advanced
-- | Returns the Tree of Nodes in Database -- | Returns the Tree of Nodes in Database
tree :: HasTreeError err tree :: HasTreeError err
=> TreeMode => TreeMode
-> RootId -> RootId
-> [NodeType] -> [NodeType]
-> Cmd err (Tree NodeTree) -> Cmd err (Tree NodeTree)
tree Basic = tree_basic tree Basic = tree_basic
tree Advanced = tree_advanced tree Advanced = tree_advanced
...@@ -73,19 +77,19 @@ tree Advanced = tree_advanced ...@@ -73,19 +77,19 @@ tree Advanced = tree_advanced
-- (without shared folders) -- (without shared folders)
-- keeping this for teaching purpose only -- keeping this for teaching purpose only
tree_basic :: HasTreeError err tree_basic :: HasTreeError err
=> RootId => RootId
-> [NodeType] -> [NodeType]
-> Cmd err (Tree NodeTree) -> Cmd err (Tree NodeTree)
tree_basic r nodeTypes = tree_basic r nodeTypes =
(dbTree r nodeTypes <&> toTreeParent) >>= toTree (dbTree r nodeTypes <&> toTreeParent) >>= toTree
-- Same as (but easier to read) : -- Same as (but easier to read) :
-- toTree =<< (toTreeParent <$> dbTree r nodeTypes) -- toTree =<< (toTreeParent <$> dbTree r nodeTypes)
-- | Advanced mode of the Tree enables shared nodes -- | Advanced mode of the Tree enables shared nodes
tree_advanced :: HasTreeError err tree_advanced :: HasTreeError err
=> RootId => RootId
-> [NodeType] -> [NodeType]
-> Cmd err (Tree NodeTree) -> Cmd err (Tree NodeTree)
tree_advanced r nodeTypes = do tree_advanced r nodeTypes = do
mainRoot <- dbTree r nodeTypes mainRoot <- dbTree r nodeTypes
sharedRoots <- findShared r NodeFolderShared nodeTypes sharedTreeUpdate sharedRoots <- findShared r NodeFolderShared nodeTypes sharedTreeUpdate
...@@ -99,9 +103,10 @@ findShared :: HasTreeError err ...@@ -99,9 +103,10 @@ findShared :: HasTreeError err
-> Cmd err [DbTreeNode] -> Cmd err [DbTreeNode]
findShared r nt nts fun = do findShared r nt nts fun = do
foldersSharedId <- findNodesId r [nt] foldersSharedId <- findNodesId r [nt]
trees <- mapM (updateTree nts fun) foldersSharedId trees <- mapM (updateTree nts fun) foldersSharedId
pure $ concat trees pure $ concat trees
type UpdateTree err = ParentId -> [NodeType] -> NodeId -> Cmd err [DbTreeNode]
updateTree :: HasTreeError err updateTree :: HasTreeError err
=> [NodeType] -> UpdateTree err -> RootId => [NodeType] -> UpdateTree err -> RootId
...@@ -113,18 +118,19 @@ updateTree nts fun r = do ...@@ -113,18 +118,19 @@ updateTree nts fun r = do
pure $ concat nodesSharedId pure $ concat nodesSharedId
type UpdateTree err = ParentId -> [NodeType] -> NodeId -> Cmd err [DbTreeNode]
sharedTreeUpdate :: HasTreeError err => UpdateTree err sharedTreeUpdate :: HasTreeError err => UpdateTree err
sharedTreeUpdate p nt n = dbTree n nt sharedTreeUpdate p nt n = dbTree n nt
<&> map (\n' -> if _dt_nodeId n' == n <&> map (\n' -> if _dt_nodeId n' == n
-- && elem (fromNodeTypeId $ _dt_typeId n') [NodeGraph]
-- && not (elem (fromNodeTypeId $ _dt_typeId n') [NodeFile])
then set dt_parentId (Just p) n' then set dt_parentId (Just p) n'
else n') else n')
publicTreeUpdate :: HasTreeError err => UpdateTree err publicTreeUpdate :: HasTreeError err => UpdateTree err
publicTreeUpdate p nt n = dbTree n nt publicTreeUpdate p nt n = dbTree n nt
<&> map (\n' -> if _dt_nodeId n' == n <&> map (\n' -> if _dt_nodeId n' == n
-- && (fromNodeTypeId $ _dt_typeId n') /= NodeFolderPublic -- && (fromNodeTypeId $ _dt_typeId n') /= NodeGraph
-- && not (elem (fromNodeTypeId $ _dt_typeId n') [NodeFile])
then set dt_parentId (Just p) n' then set dt_parentId (Just p) n'
else n') else n')
...@@ -164,7 +170,7 @@ toTree m = ...@@ -164,7 +170,7 @@ toTree m =
------------------------------------------------------------------------ ------------------------------------------------------------------------
toTreeParent :: [DbTreeNode] toTreeParent :: [DbTreeNode]
-> Map (Maybe ParentId) [DbTreeNode] -> Map (Maybe ParentId) [DbTreeNode]
toTreeParent = fromListWith (<>) . map (\n -> (_dt_parentId n, [n])) toTreeParent = fromListWith (\a b -> nub $ a <> b) . map (\n -> (_dt_parentId n, [n]))
------------------------------------------------------------------------ ------------------------------------------------------------------------
-- | Main DB Tree function -- | Main DB Tree function
dbTree :: RootId dbTree :: RootId
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment