Commit ed24e95d authored by Alexandre Delanoë's avatar Alexandre Delanoë

[DB-FLOW] functions to create nodeTypes.

parent 8438f4b7
...@@ -205,7 +205,7 @@ getNodesWith' conn id nodeType offset limit = liftIO (getNodesWith conn id node ...@@ -205,7 +205,7 @@ getNodesWith' conn id nodeType offset limit = liftIO (getNodesWith conn id node
getFacet :: Connection -> NodeId -> Maybe Int -> Maybe Int getFacet :: Connection -> NodeId -> Maybe Int -> Maybe Int
-> Handler [FacetDoc] -> Handler [FacetDoc]
getFacet conn id offset limit = liftIO (putStrLn ( "/facet" :: Text)) >> liftIO (getDocFacet conn NodeCorpus id (Just Document) offset limit) getFacet conn id offset limit = liftIO (putStrLn ( "/facet" :: Text)) >> liftIO (getDocFacet conn NodeCorpus id (Just NodeDocument) offset limit)
getChart :: Connection -> NodeId -> Maybe UTCTime -> Maybe UTCTime getChart :: Connection -> NodeId -> Maybe UTCTime -> Maybe UTCTime
-> Handler [FacetChart] -> Handler [FacetChart]
......
...@@ -60,25 +60,21 @@ userTree = TreeN (NodeTree "user name" NodeUser 1) [annuaireTree, projectTree] ...@@ -60,25 +60,21 @@ userTree = TreeN (NodeTree "user name" NodeUser 1) [annuaireTree, projectTree]
-- | Project Tree -- | Project Tree
projectTree :: Tree NodeTree projectTree :: Tree NodeTree
projectTree = TreeN (NodeTree "Project CNRS/IMT" Folder 2) [corpusTree 10 "A", corpusTree 20 "B"] projectTree = TreeN (NodeTree "Project CNRS/IMT" NodeFolder 2) [corpusTree 10 "A", corpusTree 20 "B"]
type Individu = Document
-- | Corpus Tree -- | Corpus Tree
annuaireTree :: Tree NodeTree annuaireTree :: Tree NodeTree
annuaireTree = (leafT $ NodeTree "Annuaire" Annuaire 41) annuaireTree = (leafT $ NodeTree "Annuaire" NodeAnnuaire 41)
corpusTree :: NodeId -> Text -> Tree NodeTree corpusTree :: NodeId -> Text -> Tree NodeTree
corpusTree nId t = TreeN (NodeTree ("Corpus " <> t) NodeCorpus nId) ( [ leafT $ NodeTree "Dashboard" Dashboard (nId +1) corpusTree nId t = TreeN (NodeTree ("Corpus " <> t) NodeCorpus nId) ( [ leafT $ NodeTree "Dashboard" NodeDashboard (nId +1)
, leafT $ NodeTree "Graph" Graph (nId +2) , leafT $ NodeTree "Graph" NodeGraph (nId +2)
] ]
-- <> [ leafT $ NodeTree "My lists" Lists 5] -- <> [ leafT $ NodeTree "My lists" Lists 5]
-- <> [ leafT (NodeTree "Metrics A" Metrics 6) ] -- <> [ leafT (NodeTree "Metrics A" Metrics 6) ]
-- <> [ leafT (NodeTree "Class A" Classification 7)] -- <> [ leafT (NodeTree "Class A" Classification 7)]
) )
data Parent = NodeType NodeId
--data Classification = Favorites | MyClassifcation --data Classification = Favorites | MyClassifcation
......
...@@ -125,7 +125,7 @@ tree p = do ...@@ -125,7 +125,7 @@ tree p = do
post :: PWD -> [NodeWrite'] -> Cmd Int64 post :: PWD -> [NodeWrite'] -> Cmd Int64
post [] _ = pure 0 post [] _ = pure 0
post _ [] = pure 0 post _ [] = pure 0
post pth ns = Cmd . ReaderT $ mkNode (Just $ last pth) ns post pth ns = Cmd . ReaderT $ insertNode (Just $ last pth) ns
--postR :: PWD -> [NodeWrite'] -> Cmd [Int] --postR :: PWD -> [NodeWrite'] -> Cmd [Int]
--postR [] _ _ = pure [0] --postR [] _ _ = pure [0]
......
...@@ -31,14 +31,13 @@ import Gargantext.Prelude ...@@ -31,14 +31,13 @@ import Gargantext.Prelude
nodeTypeId :: NodeType -> NodeTypeId nodeTypeId :: NodeType -> NodeTypeId
nodeTypeId n = nodeTypeId n =
case n of case n of
NodeUser -> 1 NodeUser -> 1
Folder -> 2 NodeFolder -> 2
--NodeCorpus -> 3 NodeCorpusV3 -> 3
NodeCorpusV3 -> 3 NodeCorpus -> 30
NodeCorpus -> 30 NodeAnnuaire -> 31
Annuaire -> 31 NodeDocument -> 4
Document -> 4 NodeContact -> 41
UserPage -> 41
--NodeSwap -> 19 --NodeSwap -> 19
---- Lists ---- Lists
...@@ -48,10 +47,10 @@ nodeTypeId n = ...@@ -48,10 +47,10 @@ nodeTypeId n =
-- MapList -> 8 -- MapList -> 8
---- Scores ---- Scores
Occurrences -> 10 NodeOccurrences -> 10
Graph -> 9 NodeGraph -> 9
Dashboard -> 5 NodeDashboard -> 5
Chart -> 51 NodeChart -> 51
-- Cooccurrences -> 9 -- Cooccurrences -> 9
-- --
...@@ -65,14 +64,9 @@ nodeTypeId n = ...@@ -65,14 +64,9 @@ nodeTypeId n =
-- TirankLocal -> 16 -- TirankLocal -> 16
-- TirankGlobal -> 17 -- TirankGlobal -> 17
---- Node management -- Node management
Favorites -> 15 -- NodeFavorites -> 15
-- Project -> TODO
-- Individu -> TODO
-- Classification -> TODO
-- Lists -> TODO
-- Metrics -> TODO
-- --
-- | Nodes are typed in the database according to a specific ID -- | Nodes are typed in the database according to a specific ID
......
...@@ -221,13 +221,13 @@ selectDocFacet' :: NodeType -> ParentId -> Maybe NodeType -> Query FacetDocRead ...@@ -221,13 +221,13 @@ selectDocFacet' :: NodeType -> ParentId -> Maybe NodeType -> Query FacetDocRead
selectDocFacet' _ pId _ = proc () -> do selectDocFacet' _ pId _ = proc () -> do
(n1,(nn,n2)) <- leftJoin3''' -< () (n1,(nn,n2)) <- leftJoin3''' -< ()
restrict -< (.&&) (node_parentId n1 .== (toNullable $ pgInt4 pId)) restrict -< (.&&) (node_parentId n1 .== (toNullable $ pgInt4 pId))
(node_typename n1 .== (pgInt4 $ nodeTypeId Document)) (node_typename n1 .== (pgInt4 $ nodeTypeId NodeDocument))
restrict -< (.||) (node_typename n2 .== (toNullable $ pgInt4 $ nodeTypeId Favorites)) -- restrict -< (.||) (node_typename n2 .== (toNullable $ pgInt4 $ nodeTypeId Favorites))
(isNull $ node_typename n2) -- (isNull $ node_typename n2)
--
restrict -< (.||) (node_parentId n2 .== (toNullable $ pgInt4 $ nodeTypeId Favorites)) -- restrict -< (.||) (node_parentId n2 .== (toNullable $ pgInt4 $ nodeTypeId Favorites))
(isNull $ node_parentId n2) -- (isNull $ node_parentId n2)
let isFav = ifThenElse (isNull $ nodeNode_score nn) (pgBool False) (pgBool True) let isFav = ifThenElse (isNull $ nodeNode_score nn) (pgBool False) (pgBool True)
......
...@@ -45,7 +45,7 @@ flow = do ...@@ -45,7 +45,7 @@ flow = do
masterUser <- runCmd' (getUser "gargantua") masterUser <- runCmd' (getUser "gargantua")
let masterUserId = case masterUser of let masterUserId = case masterUser of
Nothing -> panic "no user" Nothing -> panic "Error: User does not exist (yet)" -- mk NodeUser gargantua_id "Node Gargantua"
Just user -> userLight_id user Just user -> userLight_id user
root <- map node_id <$> runCmd' (getRoot masterUserId) root <- map node_id <$> runCmd' (getRoot masterUserId)
...@@ -60,7 +60,6 @@ flow = do ...@@ -60,7 +60,6 @@ flow = do
pure () pure ()
{- {-
rootId <- mk NodeUser gargantua_id "Node Gargantua"
--folderId <- mk Folder parentId (Name "Data") (Descr "All corpora DATA here") --folderId <- mk Folder parentId (Name "Data") (Descr "All corpora DATA here")
folderId <- mk Folder rootId "Data" folderId <- mk Folder rootId "Data"
......
...@@ -89,7 +89,6 @@ type CorpusId = Int ...@@ -89,7 +89,6 @@ type CorpusId = Int
type UserId = NodeId type UserId = NodeId
type TypeId = Int type TypeId = Int
------------------------------------------------------------------------ ------------------------------------------------------------------------
instance FromField HyperdataCorpus where instance FromField HyperdataCorpus where
fromField = fromField' fromField = fromField'
...@@ -99,13 +98,9 @@ instance FromField HyperdataDocument where ...@@ -99,13 +98,9 @@ instance FromField HyperdataDocument where
instance FromField HyperdataDocumentV3 where instance FromField HyperdataDocumentV3 where
fromField = fromField' fromField = fromField'
instance FromField HyperdataProject where
fromField = fromField'
instance FromField HyperdataUser where instance FromField HyperdataUser where
fromField = fromField' fromField = fromField'
------------------------------------------------------------------------
instance QueryRunnerColumnDefault PGJsonb HyperdataDocument where instance QueryRunnerColumnDefault PGJsonb HyperdataDocument where
queryRunnerColumnDefault = fieldQueryRunnerColumn queryRunnerColumnDefault = fieldQueryRunnerColumn
...@@ -115,13 +110,9 @@ instance QueryRunnerColumnDefault PGJsonb HyperdataDocumentV3 where ...@@ -115,13 +110,9 @@ instance QueryRunnerColumnDefault PGJsonb HyperdataDocumentV3 where
instance QueryRunnerColumnDefault PGJsonb HyperdataCorpus where instance QueryRunnerColumnDefault PGJsonb HyperdataCorpus where
queryRunnerColumnDefault = fieldQueryRunnerColumn queryRunnerColumnDefault = fieldQueryRunnerColumn
instance QueryRunnerColumnDefault PGJsonb HyperdataProject where
queryRunnerColumnDefault = fieldQueryRunnerColumn
instance QueryRunnerColumnDefault PGJsonb HyperdataUser where instance QueryRunnerColumnDefault PGJsonb HyperdataUser where
queryRunnerColumnDefault = fieldQueryRunnerColumn queryRunnerColumnDefault = fieldQueryRunnerColumn
------------------------------------------------------------------------
fromField' :: (Typeable b, FromJSON b) => Field -> Maybe DB.ByteString -> Conversion b fromField' :: (Typeable b, FromJSON b) => Field -> Maybe DB.ByteString -> Conversion b
fromField' field mb = do fromField' field mb = do
...@@ -261,10 +252,10 @@ getNodesWithParentId' n _ conn = runQuery conn $ selectNodesWithParentID n ...@@ -261,10 +252,10 @@ getNodesWithParentId' n _ conn = runQuery conn $ selectNodesWithParentID n
------------------------------------------------------------------------ ------------------------------------------------------------------------
getDocumentsV3WithParentId :: Connection -> Int -> IO [Node HyperdataDocumentV3] getDocumentsV3WithParentId :: Connection -> Int -> IO [Node HyperdataDocumentV3]
getDocumentsV3WithParentId conn n = runQuery conn $ selectNodesWith' n (Just Document) getDocumentsV3WithParentId conn n = runQuery conn $ selectNodesWith' n (Just NodeDocument)
getDocumentsWithParentId :: Connection -> Int -> IO [Node HyperdataDocument] getDocumentsWithParentId :: Connection -> Int -> IO [Node HyperdataDocument]
getDocumentsWithParentId conn n = runQuery conn $ selectNodesWith' n (Just Document) getDocumentsWithParentId conn n = runQuery conn $ selectNodesWith' n (Just NodeDocument)
------------------------------------------------------------------------ ------------------------------------------------------------------------
...@@ -298,15 +289,58 @@ getNodesWithType conn type_id = do ...@@ -298,15 +289,58 @@ getNodesWithType conn type_id = do
------------------------------------------------------------------------ ------------------------------------------------------------------------
-- Quick and dirty -- WIP
------------------------------------------------------------------------ ------------------------------------------------------------------------
type NodeWrite' = NodePoly (Maybe Int) Int Int (Maybe ParentId) Text (Maybe UTCTime) ByteString type NodeWrite' = NodePoly (Maybe Int) Int Int (Maybe ParentId) Text (Maybe UTCTime) ByteString
------------------------------------------------------------------------
defaultUser :: HyperdataUser
defaultUser = HyperdataUser (Just $ (pack . show) EN)
node :: ToJSON a => UserId -> Maybe ParentId -> NodeType -> Text -> Hyperdata a -> NodeWrite' nodeUserW :: Maybe Name -> Maybe HyperdataUser -> UserId -> NodeWrite'
node userId parentId nodeType name nodeData = Node Nothing typeId userId parentId name Nothing byteData nodeUserW maybeName maybeHyperdata = node NodeUser name (Hyperdata user) Nothing
where
name = maybe "User" identity maybeName
user = maybe defaultUser identity maybeHyperdata
------------------------------------------------------------------------
defaultFolder :: HyperdataFolder
defaultFolder = HyperdataFolder (Just "Markdown Description")
nodeFolderW :: Maybe Name -> Maybe HyperdataFolder -> ParentId -> UserId -> NodeWrite'
nodeFolderW maybeName maybeFolder pid = node NodeFolder name (Hyperdata folder) (Just pid)
where
name = maybe "Folder" identity maybeName
folder = maybe defaultFolder identity maybeFolder
------------------------------------------------------------------------
defaultCorpus :: HyperdataCorpus
defaultCorpus = (HyperdataCorpus (Just "Title") (Just "Descr") (Just "Bool query") (Just "Authors") Nothing)
nodeCorpusW :: Maybe Name -> Maybe HyperdataCorpus -> ParentId -> UserId -> NodeWrite'
nodeCorpusW maybeName maybeCorpus pId = node NodeCorpus name (Hyperdata corpus) (Just pId)
where
name = maybe "Corpus" identity maybeName
corpus = maybe defaultCorpus identity maybeCorpus
------------------------------------------------------------------------
defaultDocument :: HyperdataDocument
defaultDocument = hyperdataDocument
nodeDocumentW :: Maybe Name -> Maybe HyperdataDocument -> CorpusId -> UserId -> NodeWrite'
nodeDocumentW maybeName maybeDocument cId = node NodeDocument name (Hyperdata doc) (Just cId)
where
name = maybe "Document" identity maybeName
doc = maybe defaultDocument identity maybeDocument
------------------------------------------------------------------------
--defaultAnnuaire :: HyperdataAnnuaire
--defaultAnnuaire = HyperdataAnnuaire
--nodeAnnuaireW
--nodeContactW
------------------------------------------------------------------------
node :: ToJSON a => NodeType -> Name -> Hyperdata a -> Maybe ParentId -> UserId -> NodeWrite'
node nodeType name hyperData parentId userId = Node Nothing typeId userId parentId name Nothing byteData
where where
typeId = nodeTypeId nodeType typeId = nodeTypeId nodeType
byteData = DB.pack $ DBL.unpack $ encode $ unHyperdata nodeData byteData = DB.pack $ DBL.unpack $ encode $ unHyperdata hyperData
node2write :: (Functor maybe1, Functor maybe2, Functor maybe3) => node2write :: (Functor maybe1, Functor maybe2, Functor maybe3) =>
...@@ -315,30 +349,27 @@ node2write :: (Functor maybe1, Functor maybe2, Functor maybe3) => ...@@ -315,30 +349,27 @@ node2write :: (Functor maybe1, Functor maybe2, Functor maybe3) =>
maybe1 (Column PGInt4), Column PGText, maybe3 (Column PGTimestamptz), maybe1 (Column PGInt4), Column PGText, maybe3 (Column PGTimestamptz),
Column PGJsonb) Column PGJsonb)
node2write pid (Node id tn ud _ nm dt hp) = ((pgInt4 <$> id) node2write pid (Node id tn ud _ nm dt hp) = ((pgInt4 <$> id)
,(pgInt4 tn) ,(pgInt4 tn)
,(pgInt4 ud) ,(pgInt4 ud)
,(pgInt4 <$> pid) ,(pgInt4 <$> pid)
,(pgStrictText nm) ,(pgStrictText nm)
,(pgUTCTime <$> dt) ,(pgUTCTime <$> dt)
,(pgStrictJSONB hp) ,(pgStrictJSONB hp)
) )
------------------------------------------------------------------------
insertNode :: Maybe ParentId -> [NodeWrite'] -> Connection -> IO Int64
insertNode pid ns conn = runInsertMany conn nodeTable' $ map (node2write pid) ns
insertNodeR :: Maybe ParentId -> [NodeWrite'] -> Connection -> IO [Int]
mkNode :: Maybe ParentId -> [NodeWrite'] -> Connection -> IO Int64 insertNodeR pid ns conn = runInsertManyReturning conn nodeTable' (map (node2write pid) ns) (\(i,_,_,_,_,_,_) -> i)
mkNode pid ns conn = runInsertMany conn nodeTable' $ map (node2write pid) ns
mkNodeR :: Maybe ParentId -> [NodeWrite'] -> Connection -> IO [Int]
mkNodeR pid ns conn = runInsertManyReturning conn nodeTable' (map (node2write pid) ns) (\(i,_,_,_,_,_,_) -> i)
------------------------------------------------------------------------ ------------------------------------------------------------------------
-- TODO Hierachy of Nodes -- TODO Hierachy of Nodes
-- post and get same types Node' and update if changes -- post and get same types Node' and update if changes
{- TODO semantic to achieve {- TODO semantic to achieve
post c uid pid [ Node' Corpus "name" "{}" [] post c uid pid [ Node' NodeCorpus "name" "{}" []
, Node' Folder "name" "{}" [Node' Corpus "test 2" "" [ Node' Document "title" "metaData" [] , Node' NodeFolder "name" "{}" [Node' NodeCorpus "test 2" "" [ Node' NodeDocument "title" "metaData" []
, Node' Document "title" "jsonData" [] , Node' NodeDocument "title" "jsonData" []
] ]
] ]
] ]
...@@ -377,6 +408,9 @@ mkNode' ns = mkCmd $ \conn -> runInsertMany conn nodeTable' ns ...@@ -377,6 +408,9 @@ mkNode' ns = mkCmd $ \conn -> runInsertMany conn nodeTable' ns
mkNodeR' :: [NodeWriteT] -> Cmd [Int] mkNodeR' :: [NodeWriteT] -> Cmd [Int]
mkNodeR' ns = mkCmd $ \conn -> runInsertManyReturning conn nodeTable' ns (\(i,_,_,_,_,_,_) -> i) mkNodeR' ns = mkCmd $ \conn -> runInsertManyReturning conn nodeTable' ns (\(i,_,_,_,_,_,_) -> i)
------------------------------------------------------------------------
data NewNode = NewNode { _newNodeId :: Int data NewNode = NewNode { _newNodeId :: Int
, _newNodeChildren :: [Int] } , _newNodeChildren :: [Int] }
...@@ -393,26 +427,28 @@ postNode uid pid (Node' NodeCorpus txt v ns) = do ...@@ -393,26 +427,28 @@ postNode uid pid (Node' NodeCorpus txt v ns) = do
pids <- mkNodeR' (concat $ map (\n -> [childWith uid pid' n]) ns) pids <- mkNodeR' (concat $ map (\n -> [childWith uid pid' n]) ns)
pure $ NewNode pid' pids pure $ NewNode pid' pids
postNode uid pid (Node' Annuaire txt v ns) = do postNode uid pid (Node' NodeAnnuaire txt v ns) = do
NewNode pid' _ <- postNode uid pid (Node' Annuaire txt v []) NewNode pid' _ <- postNode uid pid (Node' NodeAnnuaire txt v [])
pids <- mkNodeR' (concat $ map (\n -> [childWith uid pid' n]) ns) pids <- mkNodeR' (concat $ map (\n -> [childWith uid pid' n]) ns)
pure $ NewNode pid' pids pure $ NewNode pid' pids
postNode _ _ (Node' _ _ _ _) = panic "TODO: postNode for this type not implemented yet" postNode _ _ (Node' _ _ _ _) = panic "TODO: postNode for this type not implemented yet"
childWith :: UserId -> ParentId -> Node' -> NodeWriteT childWith :: UserId -> ParentId -> Node' -> NodeWriteT
childWith uId pId (Node' Document txt v []) = node2table uId (Just pId) (Node' Document txt v []) childWith uId pId (Node' NodeDocument txt v []) = node2table uId (Just pId) (Node' NodeDocument txt v [])
childWith uId pId (Node' UserPage txt v []) = node2table uId (Just pId) (Node' UserPage txt v []) childWith uId pId (Node' NodeContact txt v []) = node2table uId (Just pId) (Node' NodeContact txt v [])
childWith _ _ (Node' _ _ _ _) = panic "This NodeType can not be a child" childWith _ _ (Node' _ _ _ _) = panic "This NodeType can not be a child"
-- TODO: remove hardcoded userId (with Reader) -- TODO: remove hardcoded userId (with Reader)
-- TODO: user Reader in the API and adapt this function -- TODO: user Reader in the API and adapt this function
userId = 1
mk :: Connection -> NodeType -> Maybe ParentId -> Text -> IO [Int] mk :: Connection -> NodeType -> Maybe ParentId -> Text -> IO [Int]
mk c nt pId name = mk' c nt 1 pId name mk c nt pId name = mk' c nt userId pId name
mk' :: Connection -> NodeType -> UserId -> Maybe ParentId -> Text -> IO [Int] mk' :: Connection -> NodeType -> UserId -> Maybe ParentId -> Text -> IO [Int]
mk' c nt uId pId name = map fromIntegral <$> mkNodeR pId [node uId pId nt name hd] c mk' c nt uId pId name = map fromIntegral <$> insertNodeR pId [node nt name hd pId uId] c
where where
hd = Hyperdata (HyperdataUser (Just $ (pack . show) EN)) hd = Hyperdata (HyperdataUser (Just $ (pack . show) EN))
......
...@@ -149,7 +149,7 @@ queryInsert = [sql| ...@@ -149,7 +149,7 @@ queryInsert = [sql|
prepare :: UserId -> ParentId -> [HyperdataDocument] -> [InputData] prepare :: UserId -> ParentId -> [HyperdataDocument] -> [InputData]
prepare uId pId = map (\h -> InputData tId uId pId (DT.pack "Doc") (toJSON $ addUniqId h)) prepare uId pId = map (\h -> InputData tId uId pId (DT.pack "Doc") (toJSON $ addUniqId h))
where where
tId = nodeTypeId Document tId = nodeTypeId NodeDocument
------------------------------------------------------------------------ ------------------------------------------------------------------------
-- * Main Types used -- * Main Types used
......
...@@ -191,10 +191,14 @@ instance Arbitrary Resource where ...@@ -191,10 +191,14 @@ instance Arbitrary Resource where
------------------------------------------------------------------------ ------------------------------------------------------------------------
data Hyperdata a = Hyperdata { unHyperdata :: a} data Hyperdata a = Hyperdata { unHyperdata :: a}
$(deriveJSON (unPrefix "") ''Hyperdata) $(deriveJSON (unPrefix "") ''Hyperdata)
data HyperdataCorpus = HyperdataCorpus { hyperdataCorpus_resources :: [Resource] data HyperdataCorpus = HyperdataCorpus { hyperdataCorpus_title :: Maybe Text
, hyperdataCorpus_descr :: Maybe Text
, hyperdataCorpus_query :: Maybe Text
, hyperdataCorpus_authors :: Maybe Text
, hyperdataCorpus_resources :: Maybe [Resource]
} deriving (Show, Generic) } deriving (Show, Generic)
$(deriveJSON (unPrefix "hyperdataCorpus_") ''HyperdataCorpus) $(deriveJSON (unPrefix "hyperdataCorpus_") ''HyperdataCorpus)
...@@ -205,17 +209,11 @@ $(deriveJSON (unPrefix "hyperdataUser_") ''HyperdataUser) ...@@ -205,17 +209,11 @@ $(deriveJSON (unPrefix "hyperdataUser_") ''HyperdataUser)
-- Preferences ? -- Preferences ?
data HyperdataFolder = HyperdataFolder { hyperdataFolder_preferences :: Maybe Text data HyperdataFolder = HyperdataFolder { hyperdataFolder_descr :: Maybe Text
} deriving (Show, Generic) } deriving (Show, Generic)
$(deriveJSON (unPrefix "hyperdataFolder_") ''HyperdataFolder) $(deriveJSON (unPrefix "hyperdataFolder_") ''HyperdataFolder)
data HyperdataProject = HyperdataProject { hyperdataProject_preferences :: Maybe Text
} deriving (Show, Generic)
$(deriveJSON (unPrefix "hyperdataProject_") ''HyperdataProject)
data HyperdataList = HyperdataList { hyperdataList_preferences :: Maybe Text data HyperdataList = HyperdataList { hyperdataList_preferences :: Maybe Text
} deriving (Show, Generic) } deriving (Show, Generic)
$(deriveJSON (unPrefix "hyperdataList_") ''HyperdataList) $(deriveJSON (unPrefix "hyperdataList_") ''HyperdataList)
...@@ -225,7 +223,6 @@ data HyperdataScore = HyperdataScore { hyperdataScore_preferences :: Maybe Tex ...@@ -225,7 +223,6 @@ data HyperdataScore = HyperdataScore { hyperdataScore_preferences :: Maybe Tex
$(deriveJSON (unPrefix "hyperdataScore_") ''HyperdataScore) $(deriveJSON (unPrefix "hyperdataScore_") ''HyperdataScore)
data HyperdataFavorites = HyperdataFavorites { hyperdataFavorites_preferences :: Maybe Text data HyperdataFavorites = HyperdataFavorites { hyperdataFavorites_preferences :: Maybe Text
} deriving (Show, Generic) } deriving (Show, Generic)
$(deriveJSON (unPrefix "hyperdataFavorites_") ''HyperdataFavorites) $(deriveJSON (unPrefix "hyperdataFavorites_") ''HyperdataFavorites)
...@@ -268,25 +265,23 @@ type NodeName = Text ...@@ -268,25 +265,23 @@ type NodeName = Text
--type NodeUser = Node HyperdataUser --type NodeUser = Node HyperdataUser
-- | Then a Node can be either a Folder or a Corpus or a Document -- | Then a Node can be either a Folder or a Corpus or a Document
type NodeUser = Node HyperdataUser type NodeUser = Node HyperdataUser
type Folder = Node HyperdataFolder type NodeFolder = Node HyperdataFolder
type Project = Node HyperdataProject type NodeCorpus = Node HyperdataCorpus
type NodeCorpus = Node HyperdataCorpus
type NodeCorpusV3 = Node HyperdataCorpus type NodeCorpusV3 = Node HyperdataCorpus
type Document = Node HyperdataDocument type NodeDocument = Node HyperdataDocument
------------------------------------------------------------------------ ------------------------------------------------------------------------
data NodeType = NodeUser data NodeType = NodeUser
-- | Project | NodeFolder
| Folder | NodeCorpus | NodeCorpusV3 | NodeDocument
| NodeCorpus | NodeCorpusV3 | Annuaire | NodeAnnuaire | NodeContact
| Document -- | Individu | NodeOccurrences
| UserPage | Favorites | NodeGraph
| Graph | Dashboard | Chart | NodeDashboard | NodeChart
-- | Classification -- | Classification
-- | Lists -- | Lists
-- | Metrics -- | Metrics
| Occurrences
deriving (Show, Read, Eq, Generic, Bounded, Enum) deriving (Show, Read, Eq, Generic, Bounded, Enum)
allNodeTypes :: [NodeType] allNodeTypes :: [NodeType]
......
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