Commit 978db810 authored by Alexandre Delanoë's avatar Alexandre Delanoë

[FIX] Duplicates in the Tree since Public

parent 21743f58
...@@ -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
...@@ -56,6 +56,10 @@ data DbTreeNode = DbTreeNode { _dt_nodeId :: NodeId ...@@ -56,6 +56,10 @@ data DbTreeNode = DbTreeNode { _dt_nodeId :: NodeId
} 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
...@@ -102,6 +106,7 @@ findShared r nt nts fun = do ...@@ -102,6 +106,7 @@ findShared r nt nts fun = do
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