Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
H
haskell-gargantext
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Przemyslaw Kaminski
haskell-gargantext
Commits
f8e799c9
Commit
f8e799c9
authored
Feb 23, 2018
by
Alexandre Delanoë
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[MOCK] all routes completed, builds but need to be adapted to fite the practices.
parent
92ebb4a8
Changes
10
Show whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
148 additions
and
85 deletions
+148
-85
gargantext.cabal
gargantext.cabal
+2
-1
package.yaml
package.yaml
+1
-0
API.hs
src/Gargantext/API.hs
+9
-9
Count.hs
src/Gargantext/API/Count.hs
+7
-6
Node.hs
src/Gargantext/API/Node.hs
+6
-3
Facet.hs
src/Gargantext/Database/Facet.hs
+14
-2
Node.hs
src/Gargantext/Database/Node.hs
+1
-1
Main.hs
src/Gargantext/Types/Main.hs
+7
-46
Node.hs
src/Gargantext/Types/Node.hs
+99
-17
stack.yaml
stack.yaml
+2
-0
No files found.
gargantext.cabal
View file @
f8e799c9
...
@@ -2,7 +2,7 @@
...
@@ -2,7 +2,7 @@
--
--
-- see: https://github.com/sol/hpack
-- see: https://github.com/sol/hpack
--
--
-- hash:
14b119af3791906ac7f3c681c0b20b5c475078386862e0d14ce3d98919c90d85
-- hash:
09c6aeeafdac8e64c7203c8d663937d4240ca86e9556a3371567cc1579eafd59
name: gargantext
name: gargantext
version: 0.1.0.0
version: 0.1.0.0
...
@@ -37,6 +37,7 @@ library
...
@@ -37,6 +37,7 @@ library
, conduit-extra
, conduit-extra
, containers
, containers
, contravariant
, contravariant
, data-time-segment
, directory
, directory
, duckling
, duckling
, extra
, extra
...
...
package.yaml
View file @
f8e799c9
...
@@ -71,6 +71,7 @@ library:
...
@@ -71,6 +71,7 @@ library:
-
conduit-extra
-
conduit-extra
-
containers
-
containers
-
contravariant
-
contravariant
-
data-time-segment
-
directory
-
directory
-
duckling
-
duckling
-
filepath
-
filepath
...
...
src/Gargantext/API.hs
View file @
f8e799c9
...
@@ -19,10 +19,13 @@ Thanks @yannEsposito for this.
...
@@ -19,10 +19,13 @@ Thanks @yannEsposito for this.
-}
-}
{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE TypeOperators #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE TypeOperators #-}
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE OverloadedStrings #-}
module
Gargantext.API
module
Gargantext.API
where
where
...
@@ -73,7 +76,7 @@ startGargantextMock port = do
...
@@ -73,7 +76,7 @@ startGargantextMock port = do
<>
show
port
<>
show
port
<>
"/count"
<>
"/count"
)
)
run
port
(
serve
api
Mock
$
mock
apiMock
Proxy
)
run
port
(
serve
api
$
mock
api
Proxy
)
---------------------------------------------------------------------
---------------------------------------------------------------------
---------------------------------------------------------------------
---------------------------------------------------------------------
...
@@ -84,9 +87,8 @@ type API = "roots" :> Roots
...
@@ -84,9 +87,8 @@ type API = "roots" :> Roots
:<|>
"node"
:>
Capture
"id"
Int
:>
NodeAPI
:<|>
"node"
:>
Capture
"id"
Int
:>
NodeAPI
:<|>
"nodes"
:>
ReqBody
'[
J
SON
]
[
Int
]
:>
NodesAPI
:<|>
"nodes"
:>
ReqBody
'[
J
SON
]
[
Int
]
:>
NodesAPI
:<|>
APIMock
-- :<|> "counts" :> Stream GET NewLineFraming '[JSON] Count :> CountAPI
-- :<|> "counts" :> Stream GET NewLineFraming '[JSON] Count :> CountAPI
type
APIMock
=
"count"
:>
ReqBody
'[
J
SON
]
Query
:>
CountAPI
:<|>
"count"
:>
ReqBody
'[
J
SON
]
Query
:>
CountAPI
-- /mv/<id>/<id>
-- /mv/<id>/<id>
-- /merge/<id>/<id>
-- /merge/<id>/<id>
...
@@ -111,8 +113,6 @@ app = serve api . server
...
@@ -111,8 +113,6 @@ app = serve api . server
api
::
Proxy
API
api
::
Proxy
API
api
=
Proxy
api
=
Proxy
---------------------------------------------------------------------
apiMock
::
Proxy
APIMock
---------------------------------------------------------------------
apiMock
=
Proxy
src/Gargantext/API/Count.hs
View file @
f8e799c9
...
@@ -16,6 +16,7 @@ Count API part of Gargantext.
...
@@ -16,6 +16,7 @@ Count API part of Gargantext.
{-# LANGUAGE TypeOperators #-}
{-# LANGUAGE TypeOperators #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DeriveAnyClass #-}
{-# LANGUAGE DeriveAnyClass #-}
{-# LANGUAGE OverloadedStrings #-}
module
Gargantext.API.Count
module
Gargantext.API.Count
where
where
...
@@ -30,7 +31,7 @@ import GHC.Generics (Generic)
...
@@ -30,7 +31,7 @@ import GHC.Generics (Generic)
import
Data.Aeson
hiding
(
Error
)
import
Data.Aeson
hiding
(
Error
)
import
Test.QuickCheck.Arbitrary
import
Test.QuickCheck.Arbitrary
import
Test.QuickCheck
(
elements
)
import
Test.QuickCheck
(
elements
)
import
Data.List
(
repeat
,
permutations
)
import
Data.List
(
permutations
)
-----------------------------------------------------------------------
-----------------------------------------------------------------------
type
CountAPI
=
Post
'[
J
SON
]
Counts
type
CountAPI
=
Post
'[
J
SON
]
Counts
...
@@ -78,15 +79,15 @@ instance Arbitrary Query where
...
@@ -78,15 +79,15 @@ instance Arbitrary Query where
-----------------------------------------------------------------------
-----------------------------------------------------------------------
-----------------------------------------------------------------------
-----------------------------------------------------------------------
type
Code
=
Integer
type
Error
=
Text
type
Error
=
Text
type
Errors
=
[
Error
]
type
Errors
=
[
Error
]
data
Message
=
Message
Integer
Errors
data
Message
=
Message
Code
Errors
deriving
(
Eq
,
Show
,
Generic
)
deriving
(
Eq
,
Show
,
Generic
)
toMessage
::
[(
Integer
,
[
Text
]
)]
->
[
Message
]
toMessage
::
[(
Code
,
Errors
)]
->
[
Message
]
toMessage
=
map
(
\
(
c
,
e
s
)
->
Message
c
es
)
toMessage
=
map
(
\
(
c
,
e
rr
)
->
Message
c
err
)
messages
::
[
Message
]
messages
::
[
Message
]
messages
=
toMessage
$
[
(
400
,
[
"Ill formed query "
])
messages
=
toMessage
$
[
(
400
,
[
"Ill formed query "
])
...
@@ -94,7 +95,7 @@ messages = toMessage $ [ (400, ["Ill formed query "])
...
@@ -94,7 +95,7 @@ messages = toMessage $ [ (400, ["Ill formed query "])
,
(
300
,
[
"Internal Gargantext Error "
])
,
(
300
,
[
"Internal Gargantext Error "
])
,
(
300
,
[
"Connexion to Gargantext Error"
])
,
(
300
,
[
"Connexion to Gargantext Error"
])
,
(
300
,
[
"Token has expired "
])
,
(
300
,
[
"Token has expired "
])
]
<>
take
10
(
repeat
(
200
,
[
""
]))
]
--
<> take 10 ( repeat (200, [""]))
instance
Arbitrary
Message
where
instance
Arbitrary
Message
where
arbitrary
=
elements
messages
arbitrary
=
elements
messages
...
...
src/Gargantext/API/Node.hs
View file @
f8e799c9
...
@@ -14,6 +14,7 @@ Node API
...
@@ -14,6 +14,7 @@ Node API
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE TypeOperators #-}
{-# LANGUAGE TypeOperators #-}
{-# LANGUAGE OverloadedStrings #-}
module
Gargantext.API.Node
module
Gargantext.API.Node
where
where
...
@@ -27,13 +28,15 @@ import Data.Text (Text())
...
@@ -27,13 +28,15 @@ import Data.Text (Text())
--import Data.Text (Text(), pack)
--import Data.Text (Text(), pack)
import
Database.PostgreSQL.Simple
(
Connection
)
import
Database.PostgreSQL.Simple
(
Connection
)
import
Gargantext.Prelude
import
Gargantext.Prelude
import
Gargantext.Types.Main
(
Node
,
NodeId
,
NodeType
)
import
Gargantext.Types.Node
import
Gargantext.Database.Node
(
getNodesWithParentId
import
Gargantext.Database.Node
(
getNodesWithParentId
,
getNode
,
getNodesWith
,
getNode
,
getNodesWith
,
deleteNode
,
deleteNodes
)
,
deleteNode
,
deleteNodes
)
import
Gargantext.Database.Facet
(
FacetDoc
,
getDocFacet
)
import
Gargantext.Database.Facet
(
FacetDoc
,
getDocFacet
)
-- | Node API Types management
-- | Node API Types management
type
Roots
=
Get
'[
J
SON
]
[
Node
Value
]
type
Roots
=
Get
'[
J
SON
]
[
Node
Value
]
...
@@ -60,7 +63,7 @@ type NodeAPI = Get '[JSON] (Node Value)
...
@@ -60,7 +63,7 @@ type NodeAPI = Get '[JSON] (Node Value)
-- :<|> "process" :> MultipartForm MultipartData :> Post '[JSON] Text
-- :<|> "process" :> MultipartForm MultipartData :> Post '[JSON] Text
-- To launch a query and update the corpus
-- To launch a query and update the corpus
:<|>
"query"
:>
Capture
"string"
Text
:>
Get
'[
J
SON
]
Text
--
:<|> "query" :> Capture "string" Text :> Get '[JSON] Text
...
@@ -74,7 +77,7 @@ nodeAPI conn id = liftIO (getNode conn id)
...
@@ -74,7 +77,7 @@ nodeAPI conn id = liftIO (getNode conn id)
:<|>
getNodesWith'
conn
id
:<|>
getNodesWith'
conn
id
:<|>
getDocFacet'
conn
id
:<|>
getDocFacet'
conn
id
-- :<|> upload
-- :<|> upload
:<|>
query
--
:<|> query
nodesAPI
::
Connection
->
[
NodeId
]
->
Server
NodesAPI
nodesAPI
::
Connection
->
[
NodeId
]
->
Server
NodesAPI
nodesAPI
conn
ids
=
deleteNodes'
conn
ids
nodesAPI
conn
ids
=
deleteNodes'
conn
ids
...
...
src/Gargantext/Database/Facet.hs
View file @
f8e799c9
...
@@ -23,7 +23,7 @@ module Gargantext.Database.Facet where
...
@@ -23,7 +23,7 @@ module Gargantext.Database.Facet where
import
Prelude
hiding
(
null
,
id
,
map
,
sum
,
not
)
import
Prelude
hiding
(
null
,
id
,
map
,
sum
,
not
)
import
Gargantext.Types
import
Gargantext.Types
import
Gargantext.Types.
Main
(
NodeType
)
import
Gargantext.Types.
Node
(
NodeType
)
import
Gargantext.Database.NodeNode
import
Gargantext.Database.NodeNode
import
Gargantext.Database.NodeNodeNgram
import
Gargantext.Database.NodeNodeNgram
import
Gargantext.Database.Node
import
Gargantext.Database.Node
...
@@ -45,6 +45,12 @@ import Opaleye.Internal.Join (NullMaker)
...
@@ -45,6 +45,12 @@ import Opaleye.Internal.Join (NullMaker)
import
qualified
Opaleye.Internal.Unpackspec
()
import
qualified
Opaleye.Internal.Unpackspec
()
import
Data.Profunctor.Product.Default
(
Default
)
import
Data.Profunctor.Product.Default
(
Default
)
import
Data.Time.Segment
(
jour
)
import
Test.QuickCheck.Arbitrary
import
Test.QuickCheck
(
elements
)
-- DocFacet
-- DocFacet
type
FacetDoc
=
Facet
NodeId
UTCTime
HyperdataDocument
Bool
-- Double
type
FacetDoc
=
Facet
NodeId
UTCTime
HyperdataDocument
Bool
-- Double
...
@@ -58,7 +64,13 @@ data Facet id created hyperdata favorite = FacetDoc { facetDoc_id :: id
...
@@ -58,7 +64,13 @@ data Facet id created hyperdata favorite = FacetDoc { facetDoc_id :: id
}
deriving
(
Show
)
}
deriving
(
Show
)
$
(
deriveJSON
(
unPrefix
"facetDoc_"
)
''
F
acet
)
$
(
deriveJSON
(
unPrefix
"facetDoc_"
)
''
F
acet
)
instance
Arbitrary
FacetDoc
where
arbitrary
=
elements
[
FacetDoc
id'
(
jour
year
01
01
)
hp
fav
|
id'
<-
[
1
..
10
]
,
year
<-
[
1990
..
2000
]
,
fav
<-
[
True
,
False
]
,
hp
<-
hyperdataDocuments
]
-- Facets / Views for the Front End
-- Facets / Views for the Front End
type
FacetDocRead
=
Facet
(
Column
PGInt4
)
(
Column
PGTimestamptz
)
(
Column
PGJsonb
)
(
Column
PGBool
)
-- (Column PGFloat8)
type
FacetDocRead
=
Facet
(
Column
PGInt4
)
(
Column
PGTimestamptz
)
(
Column
PGJsonb
)
(
Column
PGBool
)
-- (Column PGFloat8)
...
...
src/Gargantext/Database/Node.hs
View file @
f8e799c9
...
@@ -28,7 +28,7 @@ import Database.PostgreSQL.Simple.FromField ( Conversion
...
@@ -28,7 +28,7 @@ import Database.PostgreSQL.Simple.FromField ( Conversion
import
Prelude
hiding
(
null
,
id
,
map
,
sum
)
import
Prelude
hiding
(
null
,
id
,
map
,
sum
)
import
Gargantext.Types
import
Gargantext.Types
import
Gargantext.Types.
Main
(
NodeType
)
import
Gargantext.Types.
Node
(
NodeType
)
import
Gargantext.Database.Queries
import
Gargantext.Database.Queries
import
Gargantext.Prelude
hiding
(
sum
)
import
Gargantext.Prelude
hiding
(
sum
)
...
...
src/Gargantext/Types/Main.hs
View file @
f8e799c9
...
@@ -10,8 +10,12 @@ Portability : POSIX
...
@@ -10,8 +10,12 @@ Portability : POSIX
Here is a longer description of this module, containing some
Here is a longer description of this module, containing some
commentary with @some markup@.
commentary with @some markup@.
-}
-}
{-# LANGUAGE FlexibleInstances #-}
{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE OverloadedStrings #-}
module
Gargantext.Types.Main
where
module
Gargantext.Types.Main
where
...
@@ -20,24 +24,10 @@ import Prelude
...
@@ -20,24 +24,10 @@ import Prelude
import
Data.Eq
(
Eq
())
import
Data.Eq
(
Eq
())
import
Data.Monoid
((
<>
))
import
Data.Monoid
((
<>
))
import
Protolude
(
fromMaybe
)
import
Protolude
(
fromMaybe
)
import
Data.Aeson
import
GHC.Generics
import
Servant
import
Data.Text
(
unpack
)
import
Text.Read
(
read
)
import
Data.Either
(
Either
(
Right
))
--import Data.ByteString (ByteString())
--import Data.ByteString (ByteString())
import
Data.Text
(
Text
)
import
Data.Text
(
Text
)
import
Data.Time
(
UTCTime
)
import
Data.List
(
lookup
)
import
Data.List
(
lookup
)
import
Gargantext.Types.Node
(
NodePoly
,
HyperdataUser
import
Gargantext.Types.Node
,
HyperdataFolder
,
HyperdataCorpus
,
HyperdataDocument
,
HyperdataFavorites
,
HyperdataResource
,
HyperdataList
,
HyperdataScore
,
HyperdataGraph
,
HyperdataPhylo
,
HyperdataNotebook
)
-- | Language of a Text
-- | Language of a Text
...
@@ -89,15 +79,7 @@ corpusTree = NodeT Corpus ( [ leafT Document ]
...
@@ -89,15 +79,7 @@ corpusTree = NodeT Corpus ( [ leafT Document ]
-- NP
-- NP
-- * why NodeUser and not just User ?
-- * why NodeUser and not just User ?
-- * is this supposed to hold data ?
-- * is this supposed to hold data ?
data
NodeType
=
NodeUser
|
Project
|
Corpus
|
Document
|
DocumentCopy
|
Classification
|
Lists
|
Metrics
|
Occurrences
deriving
(
Show
,
Read
,
Eq
,
Generic
)
instance
FromJSON
NodeType
instance
ToJSON
NodeType
instance
FromHttpApiData
NodeType
where
parseUrlPiece
=
Right
.
read
.
unpack
data
Classification
=
Favorites
|
MyClassifcation
data
Classification
=
Favorites
|
MyClassifcation
...
@@ -107,27 +89,6 @@ data Lists = StopList | MainList | MapList | GroupList
...
@@ -107,27 +89,6 @@ data Lists = StopList | MainList | MapList | GroupList
-- | TfidfCorpus | TfidfGlobal | TirankLocal | TirankGlobal
-- | TfidfCorpus | TfidfGlobal | TirankLocal | TirankGlobal
-- | NodePoly indicates that Node has a Polymorphism Type
type
Node
json
=
NodePoly
NodeId
NodeTypeId
NodeUserId
(
Maybe
NodeParentId
)
NodeName
UTCTime
json
-- NodeVector
-- type Node json = NodePoly NodeId NodeTypeId UserId ParentId NodeName UTCTime json
type
NodeTypeId
=
Int
type
NodeId
=
Int
type
NodeParentId
=
Int
type
NodeUserId
=
Int
type
NodeName
=
Text
--type NodeVector = Vector
--type NodeUser = Node HyperdataUser
-- | Then a Node can be either a Folder or a Corpus or a Document
type
NodeUser
=
Node
HyperdataUser
type
Folder
=
Node
HyperdataFolder
type
Project
=
Folder
-- NP Node HyperdataProject ?
type
Corpus
=
Node
HyperdataCorpus
type
Document
=
Node
HyperdataDocument
-- | Community Manager Use Case
-- | Community Manager Use Case
type
Annuaire
=
Corpus
type
Annuaire
=
Corpus
type
Individu
=
Document
type
Individu
=
Document
...
...
src/Gargantext/Types/Node.hs
View file @
f8e799c9
{-# LANGUAGE TemplateHaskell #-}
{-|
Module : Gargantext.Types.Nodes
Description : Main Types of Nodes
Copyright : (c) CNRS, 2017-Present
License : AGPL + CECILL v3
Maintainer : team@gargantext.org
Stability : experimental
Portability : POSIX
-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE FlexibleInstances #-}
-- {-# LANGUAGE DuplicateRecordFields #-}
-- {-# LANGUAGE DuplicateRecordFields #-}
module
Gargantext.Types.Node
where
module
Gargantext.Types.Node
where
...
@@ -7,28 +21,26 @@ module Gargantext.Types.Node where
...
@@ -7,28 +21,26 @@ module Gargantext.Types.Node where
import
Gargantext.Prelude
import
Gargantext.Prelude
import
Text.Show
(
Show
())
import
Text.Show
(
Show
())
import
Data.Text
(
Text
)
import
Data.Text
(
Text
,
unpack
)
import
Text.Read
(
read
)
import
GHC.Generics
(
Generic
)
import
GHC.Generics
(
Generic
)
import
Data.Eq
(
Eq
)
import
Data.Time
(
UTCTime
)
import
Data.Time
(
UTCTime
)
import
Gargantext.Utils.Prefix
(
unPrefix
)
import
Gargantext.Utils.Prefix
(
unPrefix
)
import
Data.Aeson.TH
(
deriveJSON
)
import
Data.Aeson.TH
(
deriveJSON
)
import
Data.Aeson
import
Servant
import
Data.Either
import
Test.QuickCheck.Arbitrary
import
Test.QuickCheck
(
elements
)
-- Instances:
-- node_Id... ?
import
Data.Time.Segment
(
jour
)
data
NodePoly
id
typename
userId
parentId
name
date
hyperdata
=
Node
{
node_id
::
id
import
Data.Aeson
(
Value
(),
toJSON
)
,
node_typename
::
typename
,
node_userId
::
userId
-- , nodeHashId :: hashId
,
node_parentId
::
parentId
,
node_name
::
name
,
node_date
::
date
,
node_hyperdata
::
hyperdata
-- , node_titleAbstract :: titleAbstract
}
deriving
(
Show
)
$
(
deriveJSON
(
unPrefix
"node_"
)
''
N
odePoly
)
------------------------------------------------------------------------
data
Status
=
Status
{
status_Date
::
Maybe
UTCTime
data
Status
=
Status
{
status_Date
::
Maybe
UTCTime
,
status_Error
::
Maybe
Text
,
status_Error
::
Maybe
Text
,
status_Action
::
Maybe
Text
,
status_Action
::
Maybe
Text
...
@@ -37,7 +49,11 @@ data Status = Status { status_Date :: Maybe UTCTime
...
@@ -37,7 +49,11 @@ data Status = Status { status_Date :: Maybe UTCTime
}
deriving
(
Show
,
Generic
)
}
deriving
(
Show
,
Generic
)
$
(
deriveJSON
(
unPrefix
"status_"
)
''
S
tatus
)
$
(
deriveJSON
(
unPrefix
"status_"
)
''
S
tatus
)
instance
Arbitrary
Status
where
arbitrary
=
elements
[
Status
Nothing
Nothing
Nothing
Nothing
Nothing
]
------------------------------------------------------------------------
data
HyperdataDocument
=
HyperdataDocument
{
hyperdataDocument_Bdd
::
Maybe
Text
data
HyperdataDocument
=
HyperdataDocument
{
hyperdataDocument_Bdd
::
Maybe
Text
,
hyperdataDocument_Doi
::
Maybe
Text
,
hyperdataDocument_Doi
::
Maybe
Text
,
hyperdataDocument_Url
::
Maybe
Text
,
hyperdataDocument_Url
::
Maybe
Text
...
@@ -56,11 +72,24 @@ data HyperdataDocument = HyperdataDocument { hyperdataDocument_Bdd
...
@@ -56,11 +72,24 @@ data HyperdataDocument = HyperdataDocument { hyperdataDocument_Bdd
}
deriving
(
Show
,
Generic
)
}
deriving
(
Show
,
Generic
)
$
(
deriveJSON
(
unPrefix
"hyperdataDocument_"
)
''
H
yperdataDocument
)
$
(
deriveJSON
(
unPrefix
"hyperdataDocument_"
)
''
H
yperdataDocument
)
hyperdataDocuments
::
[
HyperdataDocument
]
hyperdataDocuments
=
[
HyperdataDocument
Nothing
Nothing
Nothing
Nothing
(
Just
"Title"
)
Nothing
(
Just
"Abstract"
)
Nothing
Nothing
Nothing
Nothing
Nothing
Nothing
Nothing
Nothing
]
instance
Arbitrary
HyperdataDocument
where
arbitrary
=
elements
hyperdataDocuments
------------------------------------------------------------------------
data
LanguageNodes
=
LanguageNodes
{
languageNodes___unknown__
::
[
Int
]}
data
LanguageNodes
=
LanguageNodes
{
languageNodes___unknown__
::
[
Int
]}
deriving
(
Show
,
Generic
)
deriving
(
Show
,
Generic
)
$
(
deriveJSON
(
unPrefix
"languageNodes_"
)
''
L
anguageNodes
)
$
(
deriveJSON
(
unPrefix
"languageNodes_"
)
''
L
anguageNodes
)
------------------------------------------------------------------------
data
Resource
=
Resource
{
resource_Url
::
Maybe
Text
data
Resource
=
Resource
{
resource_Url
::
Maybe
Text
,
resource_Path
::
Maybe
Text
,
resource_Path
::
Maybe
Text
,
resource_Type
::
Maybe
Int
,
resource_Type
::
Maybe
Int
...
@@ -68,6 +97,8 @@ data Resource = Resource { resource_Url :: Maybe Text
...
@@ -68,6 +97,8 @@ data Resource = Resource { resource_Url :: Maybe Text
}
deriving
(
Show
,
Generic
)
}
deriving
(
Show
,
Generic
)
$
(
deriveJSON
(
unPrefix
"resource_"
)
''
R
esource
)
$
(
deriveJSON
(
unPrefix
"resource_"
)
''
R
esource
)
instance
Arbitrary
Resource
where
arbitrary
=
elements
[
Resource
Nothing
Nothing
Nothing
Nothing
]
data
HyperdataCorpus
=
HyperdataCorpus
{
hyperdataCorpus_Action
::
Maybe
Text
data
HyperdataCorpus
=
HyperdataCorpus
{
hyperdataCorpus_Action
::
Maybe
Text
,
hyperdataCorpus_Statuses
::
Maybe
[
Status
]
,
hyperdataCorpus_Statuses
::
Maybe
[
Status
]
...
@@ -79,7 +110,6 @@ data HyperdataCorpus = HyperdataCorpus { hyperdataCorpus_Action :: Maybe T
...
@@ -79,7 +110,6 @@ data HyperdataCorpus = HyperdataCorpus { hyperdataCorpus_Action :: Maybe T
$
(
deriveJSON
(
unPrefix
"hyperdataCorpus_"
)
''
H
yperdataCorpus
)
$
(
deriveJSON
(
unPrefix
"hyperdataCorpus_"
)
''
H
yperdataCorpus
)
data
HyperdataUser
=
HyperdataUser
{
hyperdataUser_language
::
Maybe
Text
data
HyperdataUser
=
HyperdataUser
{
hyperdataUser_language
::
Maybe
Text
}
deriving
(
Show
,
Generic
)
}
deriving
(
Show
,
Generic
)
$
(
deriveJSON
(
unPrefix
"hyperdataUser_"
)
''
H
yperdataUser
)
$
(
deriveJSON
(
unPrefix
"hyperdataUser_"
)
''
H
yperdataUser
)
...
@@ -135,4 +165,56 @@ $(deriveJSON (unPrefix "hyperdataNotebook_") ''HyperdataNotebook)
...
@@ -135,4 +165,56 @@ $(deriveJSON (unPrefix "hyperdataNotebook_") ''HyperdataNotebook)
-- | NodePoly indicates that Node has a Polymorphism Type
type
Node
json
=
NodePoly
NodeId
NodeTypeId
NodeUserId
(
Maybe
NodeParentId
)
NodeName
UTCTime
json
-- NodeVector
-- type Node json = NodePoly NodeId NodeTypeId UserId ParentId NodeName UTCTime json
type
NodeTypeId
=
Int
type
NodeId
=
Int
type
NodeParentId
=
Int
type
NodeUserId
=
Int
type
NodeName
=
Text
--type NodeVector = Vector
--type NodeUser = Node HyperdataUser
-- | Then a Node can be either a Folder or a Corpus or a Document
type
NodeUser
=
Node
HyperdataUser
type
Folder
=
Node
HyperdataFolder
type
Project
=
Folder
-- NP Node HyperdataProject ?
type
Corpus
=
Node
HyperdataCorpus
type
Document
=
Node
HyperdataDocument
data
NodeType
=
NodeUser
|
Project
|
Corpus
|
Document
|
DocumentCopy
|
Classification
|
Lists
|
Metrics
|
Occurrences
deriving
(
Show
,
Read
,
Eq
,
Generic
)
instance
FromJSON
NodeType
instance
ToJSON
NodeType
instance
FromHttpApiData
NodeType
where
parseUrlPiece
=
Right
.
read
.
unpack
------------------------------------------------------------------------
data
NodePoly
id
typename
userId
parentId
name
date
hyperdata
=
Node
{
node_id
::
id
,
node_typename
::
typename
,
node_userId
::
userId
-- , nodeHashId :: hashId
,
node_parentId
::
parentId
,
node_name
::
name
,
node_date
::
date
,
node_hyperdata
::
hyperdata
-- , node_titleAbstract :: titleAbstract
}
deriving
(
Show
)
$
(
deriveJSON
(
unPrefix
"node_"
)
''
N
odePoly
)
instance
Arbitrary
(
NodePoly
NodeId
NodeTypeId
(
Maybe
NodeUserId
)
NodeParentId
NodeName
UTCTime
Value
)
where
arbitrary
=
elements
[
Node
1
1
(
Just
1
)
1
"name"
(
jour
2018
01
01
)
(
toJSON
(
"{}"
::
Text
))]
instance
Arbitrary
(
NodePoly
NodeId
NodeTypeId
NodeUserId
(
Maybe
NodeParentId
)
NodeName
UTCTime
Value
)
where
arbitrary
=
elements
[
Node
1
1
1
(
Just
1
)
"name"
(
jour
2018
01
01
)
(
toJSON
(
"{}"
::
Text
))]
stack.yaml
View file @
f8e799c9
...
@@ -4,6 +4,8 @@ packages:
...
@@ -4,6 +4,8 @@ packages:
-
.
-
.
allow-newer
:
true
allow-newer
:
true
extra-deps
:
extra-deps
:
-
git
:
git@github.com:delanoe/data-time-segment.git
commit
:
4e3d57d80e9dfe6624c8eeaa8595fc8fe64d8723
-
aeson-0.11.3.0
-
aeson-0.11.3.0
-
aeson-lens-0.5.0.0
-
aeson-lens-0.5.0.0
-
duckling-0.1.3.0
-
duckling-0.1.3.0
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment