From ba3cd903ddc3e13b1c1ff8cdd3465111dba1d4bc Mon Sep 17 00:00:00 2001 From: Przemek Kaminski <pk@intrepidus.pl> Date: Fri, 18 Dec 2020 14:43:08 +0100 Subject: [PATCH] [temp] some debugging code for the tree reload fix --- devops/docker/docker-compose.yaml | 4 ++- src/Gargantext/Database/Query/Tree.hs | 51 +++++++++++++++++++++------ 2 files changed, 43 insertions(+), 12 deletions(-) diff --git a/devops/docker/docker-compose.yaml b/devops/docker/docker-compose.yaml index 62e5ae33..42d45f41 100644 --- a/devops/docker/docker-compose.yaml +++ b/devops/docker/docker-compose.yaml @@ -21,11 +21,13 @@ services: ports: - 8081:80 environment: - PGADMIN_DEFAULT_EMAIL: admin + PGADMIN_DEFAULT_EMAIL: admin@localhost PGADMIN_DEFAULT_PASSWORD: admin depends_on: - postgres + links: + - postgres corenlp: image: 'cgenie/corenlp-garg' diff --git a/src/Gargantext/Database/Query/Tree.hs b/src/Gargantext/Database/Query/Tree.hs index 217b0860..99f63b6f 100644 --- a/src/Gargantext/Database/Query/Tree.hs +++ b/src/Gargantext/Database/Query/Tree.hs @@ -39,7 +39,7 @@ import Control.Lens (view, toListOf, at, each, _Just, to, set, makeLenses) import Control.Monad.Error.Class (MonadError()) import Data.List (tail, concat, nub) import Data.Map (Map, fromListWith, lookup) -import qualified Data.Set as Set +-- import qualified Data.Set as Set import qualified Data.List as List import Data.Text (Text) import Database.PostgreSQL.Simple @@ -99,9 +99,13 @@ tree_advanced :: HasTreeError err -> [NodeType] -> Cmd err (Tree NodeTree) tree_advanced r nodeTypes = do + let rPrefix s = "[tree_advanced] root = " <> show r <> " " <> s mainRoot <- findNodes r Private nodeTypes - sharedRoots <- findNodes r Shared nodeTypes + printDebug (rPrefix "mainRoot") mainRoot publicRoots <- findNodes r Public nodeTypes + printDebug (rPrefix "publicRoots") publicRoots + sharedRoots <- findNodes r Shared nodeTypes + printDebug (rPrefix "sharedRoots") sharedRoots toTree $ toTreeParent (mainRoot <> sharedRoots <> publicRoots) -- | Fetch only first level of tree @@ -110,10 +114,16 @@ tree_first_level :: HasTreeError err -> [NodeType] -> Cmd err (Tree NodeTree) tree_first_level r nodeTypes = do + let rPrefix s = "[tree_first_level] root = " <> show r <> " " <> s mainRoot <- findNodes r Private nodeTypes - sharedRoots <- findNodes r Shared nodeTypes + printDebug (rPrefix "mainRoot") mainRoot publicRoots <- findNodes r Public nodeTypes - toTree $ toSubtreeParent (mainRoot <> sharedRoots <> publicRoots) + printDebug (rPrefix "publicRoots") publicRoots + sharedRoots <- findNodes r Shared nodeTypes + printDebug (rPrefix "sharedRoots") sharedRoots + ret <- toTree $ toSubtreeParent r (mainRoot <> sharedRoots <> publicRoots) + printDebug (rPrefix "tree") ret + pure ret ------------------------------------------------------------------------ data NodeMode = Private | Shared | Public @@ -214,24 +224,43 @@ toTreeParent :: [DbTreeNode] -> Map (Maybe ParentId) [DbTreeNode] toTreeParent = fromListWith (\a b -> nub $ a <> b) . map (\n -> (_dt_parentId n, [n])) ------------------------------------------------------------------------ -toSubtreeParent :: [DbTreeNode] +-- toSubtreeParent' :: [DbTreeNode] +-- -> Map (Maybe ParentId) [DbTreeNode] +-- toSubtreeParent' ns = fromListWith (\a b -> nub $ a <> b) . map (\n -> (_dt_parentId n, [n])) $ nullifiedParents +-- where +-- nodeIds = Set.fromList $ map (\n -> unNodeId $ _dt_nodeId n) ns +-- nullifiedParents = map nullifyParent ns +-- nullifyParent dt@(DbTreeNode { _dt_parentId = Nothing }) = dt +-- nullifyParent dt@(DbTreeNode { _dt_nodeId = nId +-- , _dt_parentId = Just pId +-- , _dt_typeId = tId +-- , _dt_name = name }) = +-- if Set.member (unNodeId pId) nodeIds then +-- dt +-- else +-- DbTreeNode { _dt_nodeId = nId +-- , _dt_typeId = tId +-- , _dt_parentId = Nothing +-- , _dt_name = name } +------------------------------------------------------------------------ +toSubtreeParent :: RootId + -> [DbTreeNode] -> Map (Maybe ParentId) [DbTreeNode] -toSubtreeParent ns = fromListWith (\a b -> nub $ a <> b) . map (\n -> (_dt_parentId n, [n])) $ nullifiedParents +toSubtreeParent r ns = fromListWith (\a b -> nub $ a <> b) . map (\n -> (_dt_parentId n, [n])) $ nullifiedParents where - nodeIds = Set.fromList $ map (\n -> unNodeId $ _dt_nodeId n) ns nullifiedParents = map nullifyParent ns nullifyParent dt@(DbTreeNode { _dt_parentId = Nothing }) = dt nullifyParent dt@(DbTreeNode { _dt_nodeId = nId - , _dt_parentId = Just pId + , _dt_parentId = _pId , _dt_typeId = tId , _dt_name = name }) = - if Set.member (unNodeId pId) nodeIds then - dt - else + if r == nId then DbTreeNode { _dt_nodeId = nId , _dt_typeId = tId , _dt_parentId = Nothing , _dt_name = name } + else + dt ------------------------------------------------------------------------ -- | Main DB Tree function dbTree :: RootId -- 2.21.0