Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
haskell-gargantext
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
158
Issues
158
List
Board
Labels
Milestones
Merge Requests
10
Merge Requests
10
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
gargantext
haskell-gargantext
Commits
1b90c03a
Commit
1b90c03a
authored
Oct 19, 2018
by
Alexandre Delanoë
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[DBFLOW] /api/v1.0/node/{id}/table ok
parent
51a7b876
Changes
7
Show whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
125 additions
and
85 deletions
+125
-85
package.yaml
package.yaml
+2
-1
Node.hs
src/Gargantext/API/Node.hs
+36
-16
Facet.hs
src/Gargantext/Database/Facet.hs
+62
-31
Flow.hs
src/Gargantext/Database/Flow.hs
+4
-13
Add.hs
src/Gargantext/Database/Node/Document/Add.hs
+2
-9
Insert.hs
src/Gargantext/Database/Node/Document/Insert.hs
+19
-14
NodeNode.hs
src/Gargantext/Database/NodeNode.hs
+0
-1
No files found.
package.yaml
View file @
1b90c03a
...
@@ -37,7 +37,8 @@ library:
...
@@ -37,7 +37,8 @@ library:
-
Gargantext.Core.Utils.Prefix
-
Gargantext.Core.Utils.Prefix
-
Gargantext.Database
-
Gargantext.Database
-
Gargantext.Database.Bashql
-
Gargantext.Database.Bashql
-
Gargantext.Database.Node.Document.Import
-
Gargantext.Database.Node.Document.Insert
-
Gargantext.Database.Node.Document.Add
-
Gargantext.Database.Types.Node
-
Gargantext.Database.Types.Node
-
Gargantext.Database.User
-
Gargantext.Database.User
-
Gargantext.Database.Cooc
-
Gargantext.Database.Cooc
...
...
src/Gargantext/API/Node.hs
View file @
1b90c03a
...
@@ -30,12 +30,13 @@ module Gargantext.API.Node
...
@@ -30,12 +30,13 @@ module Gargantext.API.Node
,
HyperdataDocumentV3
(
..
)
,
HyperdataDocumentV3
(
..
)
)
where
)
where
-------------------------------------------------------------------
-------------------------------------------------------------------
import
Prelude
(
Enum
,
Bounded
,
minBound
,
maxBound
)
import
Control.Lens
(
prism'
)
import
Control.Lens
(
prism'
)
import
Control.Monad.IO.Class
(
liftIO
)
import
Control.Monad.IO.Class
(
liftIO
)
import
Control.Monad
((
>>
))
import
Control.Monad
((
>>
))
--import System.IO (putStrLn, readFile)
--import System.IO (putStrLn, readFile)
import
Data.Either
(
Either
(
Left
))
import
Data.Aeson
(
FromJSON
,
ToJSON
,
Value
())
import
Data.Aeson
(
FromJSON
,
ToJSON
,
Value
())
--import Data.Text (Text(), pack)
--import Data.Text (Text(), pack)
import
Data.Text
(
Text
())
import
Data.Text
(
Text
())
...
@@ -46,7 +47,6 @@ import Database.PostgreSQL.Simple (Connection)
...
@@ -46,7 +47,6 @@ import Database.PostgreSQL.Simple (Connection)
import
GHC.Generics
(
Generic
)
import
GHC.Generics
(
Generic
)
import
Servant
import
Servant
-- import Servant.Multipart
import
Gargantext.Prelude
import
Gargantext.Prelude
import
Gargantext.Database.Types.Node
import
Gargantext.Database.Types.Node
...
@@ -55,7 +55,7 @@ import Gargantext.Database.Node ( runCmd
...
@@ -55,7 +55,7 @@ import Gargantext.Database.Node ( runCmd
,
getNode
,
getNodesWith
,
getNode
,
getNodesWith
,
deleteNode
,
deleteNodes
,
mk
,
JSONB
)
,
deleteNode
,
deleteNodes
,
mk
,
JSONB
)
import
qualified
Gargantext.Database.Node.Update
as
U
(
update
,
Update
(
..
))
import
qualified
Gargantext.Database.Node.Update
as
U
(
update
,
Update
(
..
))
import
Gargantext.Database.Facet
(
FacetDoc
{-,getDocFacet-}
import
Gargantext.Database.Facet
(
FacetDoc
,
runViewDocuments'
,
OrderBy
(
..
)
,
FacetChart
)
,
FacetChart
)
import
Gargantext.Database.Tree
(
treeDB
,
HasTreeError
(
..
),
TreeError
(
..
))
import
Gargantext.Database.Tree
(
treeDB
,
HasTreeError
(
..
),
TreeError
(
..
))
...
@@ -63,6 +63,7 @@ import Gargantext.Database.Tree (treeDB, HasTreeError(..), TreeError(..))
...
@@ -63,6 +63,7 @@ import Gargantext.Database.Tree (treeDB, HasTreeError(..), TreeError(..))
import
Gargantext.TextFlow
import
Gargantext.TextFlow
import
Gargantext.Viz.Graph
(
Graph
)
import
Gargantext.Viz.Graph
(
Graph
)
import
Gargantext.Core
(
Lang
(
..
))
import
Gargantext.Core
(
Lang
(
..
))
import
Gargantext.Core.Types
(
Offset
,
Limit
)
import
Gargantext.Core.Types.Main
(
Tree
,
NodeTree
)
import
Gargantext.Core.Types.Main
(
Tree
,
NodeTree
)
import
Gargantext.Text.Terms
(
TermType
(
..
))
import
Gargantext.Text.Terms
(
TermType
(
..
))
...
@@ -117,21 +118,35 @@ type NodeAPI a = Get '[JSON] (Node a)
...
@@ -117,21 +118,35 @@ type NodeAPI a = Get '[JSON] (Node a)
:>
QueryParam
"offset"
Int
:>
QueryParam
"offset"
Int
:>
QueryParam
"limit"
Int
:>
QueryParam
"limit"
Int
:>
Get
'[
J
SON
]
[
Node
a
]
:>
Get
'[
J
SON
]
[
Node
a
]
:<|>
"facet"
:>
Summary
" Facet documents"
:<|>
Summary
" Tabs"
:>
FacetDocAPI
:>
"documents"
:>
FacetDocAPI
-- :<|> "facet" :<|> "sources" :<|> FacetSourcesAPI
-- :<|> "facet" :<|> "authors" :<|> FacetAuthorsAPI
-- :<|> "facet" :<|> "terms" :<|> FacetTermsAPI
--data FacetFormat = Table | Chart
--data FacetFormat = Table | Chart
--data FacetType = Doc | Term | Source | Author
data
FacetType
=
Docs
|
Terms
|
Sources
|
Authors
|
Trash
--data Facet = Facet Doc Format
deriving
(
Generic
,
Enum
,
Bounded
)
instance
FromHttpApiData
FacetType
where
parseUrlPiece
"Docs"
=
pure
Docs
parseUrlPiece
"Terms"
=
pure
Terms
parseUrlPiece
"Sources"
=
pure
Sources
parseUrlPiece
"Authors"
=
pure
Authors
parseUrlPiece
"Trash"
=
pure
Trash
parseUrlPiece
_
=
Left
"Unexpected value of FacetType"
instance
ToParamSchema
FacetType
instance
ToJSON
FacetType
instance
FromJSON
FacetType
instance
ToSchema
FacetType
instance
Arbitrary
FacetType
where
arbitrary
=
elements
[
minBound
..
maxBound
]
type
FacetDocAPI
=
"table"
type
FacetDocAPI
=
"table"
:>
Summary
" Table data"
:>
Summary
" Table data"
:>
QueryParam
"view"
FacetType
:>
QueryParam
"offset"
Int
:>
QueryParam
"offset"
Int
:>
QueryParam
"limit"
Int
:>
QueryParam
"limit"
Int
:>
QueryParam
"order"
OrderBy
:>
Get
'[
J
SON
]
[
FacetDoc
]
:>
Get
'[
J
SON
]
[
FacetDoc
]
:<|>
"chart"
:<|>
"chart"
...
@@ -183,7 +198,7 @@ nodeAPI conn p id
...
@@ -183,7 +198,7 @@ nodeAPI conn p id
:<|>
putNode
conn
id
:<|>
putNode
conn
id
:<|>
deleteNode'
conn
id
:<|>
deleteNode'
conn
id
:<|>
getNodesWith'
conn
id
p
:<|>
getNodesWith'
conn
id
p
:<|>
get
Facet
conn
id
:<|>
get
Table
conn
id
:<|>
getChart
conn
id
:<|>
getChart
conn
id
-- :<|> upload
-- :<|> upload
-- :<|> query
-- :<|> query
...
@@ -195,6 +210,15 @@ rename c nId (RenameNode name) = liftIO $ U.update (U.Rename nId name) c
...
@@ -195,6 +210,15 @@ rename c nId (RenameNode name) = liftIO $ U.update (U.Rename nId name) c
nodesAPI
::
Connection
->
[
NodeId
]
->
Server
NodesAPI
nodesAPI
::
Connection
->
[
NodeId
]
->
Server
NodesAPI
nodesAPI
conn
ids
=
deleteNodes'
conn
ids
nodesAPI
conn
ids
=
deleteNodes'
conn
ids
getTable
::
Connection
->
NodeId
->
Maybe
FacetType
->
Maybe
Offset
->
Maybe
Limit
->
Maybe
OrderBy
->
Handler
[
FacetDoc
]
getTable
c
cId
ft
o
l
order
=
liftIO
$
case
ft
of
(
Just
Docs
)
->
runViewDocuments'
c
cId
False
o
l
order
(
Just
Trash
)
->
runViewDocuments'
c
cId
True
o
l
order
_
->
panic
"not implemented"
postNode
::
Connection
->
NodeId
->
PostNode
->
Handler
[
Int
]
postNode
::
Connection
->
NodeId
->
PostNode
->
Handler
[
Int
]
postNode
c
pId
(
PostNode
name
nt
)
=
liftIO
$
mk
c
nt
(
Just
pId
)
name
postNode
c
pId
(
PostNode
name
nt
)
=
liftIO
$
mk
c
nt
(
Just
pId
)
name
...
@@ -212,10 +236,6 @@ getNodesWith' :: JSONB a => Connection -> NodeId -> proxy a -> Maybe NodeType
...
@@ -212,10 +236,6 @@ getNodesWith' :: JSONB a => Connection -> NodeId -> proxy a -> Maybe NodeType
getNodesWith'
conn
id
p
nodeType
offset
limit
=
liftIO
(
getNodesWith
conn
id
p
nodeType
offset
limit
)
getNodesWith'
conn
id
p
nodeType
offset
limit
=
liftIO
(
getNodesWith
conn
id
p
nodeType
offset
limit
)
getFacet
::
Connection
->
NodeId
->
Maybe
Int
->
Maybe
Int
->
Handler
[
FacetDoc
]
getFacet
conn
id
offset
limit
=
undefined
-- 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
]
getChart
_
_
_
_
=
undefined
-- TODO
getChart
_
_
_
_
=
undefined
-- TODO
...
...
src/Gargantext/Database/Facet.hs
View file @
1b90c03a
...
@@ -11,6 +11,7 @@ Portability : POSIX
...
@@ -11,6 +11,7 @@ Portability : POSIX
{-# OPTIONS_GHC -fno-warn-orphans #-}
{-# OPTIONS_GHC -fno-warn-orphans #-}
{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
{-# LANGUAGE Arrows #-}
{-# LANGUAGE Arrows #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE FlexibleContexts #-}
...
@@ -19,41 +20,41 @@ Portability : POSIX
...
@@ -19,41 +20,41 @@ Portability : POSIX
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# LANGUAGE NoMonomorphismRestriction #-}
{-# LANGUAGE NoMonomorphismRestriction #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE TemplateHaskell #-}
------------------------------------------------------------------------
------------------------------------------------------------------------
module
Gargantext.Database.Facet
module
Gargantext.Database.Facet
where
where
------------------------------------------------------------------------
------------------------------------------------------------------------
import
Prelude
hiding
(
null
,
id
,
map
,
sum
,
not
)
import
Prelude
hiding
(
null
,
id
,
map
,
sum
,
not
,
read
)
import
Prelude
(
Enum
,
Bounded
,
minBound
,
maxBound
)
import
GHC.Generics
(
Generic
)
import
GHC.Generics
(
Generic
)
-- import Data.Aeson (Value)
import
Data.Aeson
(
FromJSON
,
ToJSON
)
import
Data.Either
(
Either
(
Left
))
import
Control.Arrow
(
returnA
)
import
Control.Arrow
(
returnA
)
import
Control.Lens.TH
(
makeLensesWith
,
abbreviatedFields
)
import
Control.Lens.TH
(
makeLensesWith
,
abbreviatedFields
)
import
Data.Aeson.TH
(
deriveJSON
)
import
Data.Aeson.TH
(
deriveJSON
)
import
Data.Maybe
(
Maybe
)
import
Data.Maybe
(
Maybe
)
import
Data.Profunctor.Product.Default
(
Default
)
import
Data.Profunctor.Product.TH
(
makeAdaptorAndInstance
)
import
Data.Profunctor.Product.TH
(
makeAdaptorAndInstance
)
import
Data.Text
(
Text
)
import
Data.Time
(
UTCTime
)
import
Data.Time
(
UTCTime
)
import
Data.Time.Segment
(
jour
)
import
Data.Time.Segment
(
jour
)
import
Data.Swagger
import
Data.Swagger
import
Database.PostgreSQL.Simple
(
Connection
)
import
Database.PostgreSQL.Simple
(
Connection
)
import
Opaleye
import
Opaleye
import
Opaleye.Internal.Join
(
NullMaker
)
import
qualified
Opaleye.Internal.Unpackspec
()
import
qualified
Opaleye.Internal.Unpackspec
()
import
Servant.API
import
Test.QuickCheck.Arbitrary
import
Test.QuickCheck.Arbitrary
import
Test.QuickCheck
(
elements
)
import
Test.QuickCheck
(
elements
)
import
Gargantext.Core.Types
import
Gargantext.Core.Types
import
Gargantext.Database.Types.Node
(
NodeType
)
import
Gargantext.Core.Utils.Prefix
(
unPrefix
)
import
Gargantext.Core.Utils.Prefix
(
unPrefix
)
import
Gargantext.Database.NodeNode
import
Gargantext.Database.NodeNode
import
Gargantext.Database.NodeNodeNgram
import
Gargantext.Database.Node
import
Gargantext.Database.Node
import
Gargantext.Database.Queries
import
Gargantext.Database.Queries
import
Gargantext.Database.Config
(
nodeTypeId
)
import
Gargantext.Database.Config
(
nodeTypeId
)
...
@@ -68,17 +69,19 @@ import Gargantext.Database.Config (nodeTypeId)
...
@@ -68,17 +69,19 @@ import Gargantext.Database.Config (nodeTypeId)
--instance ToJSON Facet
--instance ToJSON Facet
type
Favorite
=
Bool
type
Favorite
=
Bool
type
Title
=
Text
type
FacetDoc
=
Facet
NodeId
UTCTime
HyperdataDocument
Favorite
Int
type
FacetDoc
=
Facet
NodeId
UTCTime
Title
HyperdataDocument
Favorite
Int
type
FacetSources
=
FacetDoc
type
FacetSources
=
FacetDoc
type
FacetAuthors
=
FacetDoc
type
FacetAuthors
=
FacetDoc
type
FacetTerms
=
FacetDoc
type
FacetTerms
=
FacetDoc
data
Facet
id
created
hyperdata
favorite
ngramCount
=
data
Facet
id
created
title
hyperdata
favorite
ngramCount
=
FacetDoc
{
facetDoc_id
::
id
FacetDoc
{
facetDoc_id
::
id
,
facetDoc_created
::
created
,
facetDoc_created
::
created
,
facetDoc_title
::
title
,
facetDoc_hyperdata
::
hyperdata
,
facetDoc_hyperdata
::
hyperdata
,
facetDoc_favorite
::
favorite
,
facetDoc_favorite
::
favorite
,
facetDoc_ngramCount
::
ngramCount
,
facetDoc_ngramCount
::
ngramCount
...
@@ -94,9 +97,10 @@ instance ToSchema FacetDoc
...
@@ -94,9 +97,10 @@ instance ToSchema FacetDoc
-- | Mock and Quickcheck instances
-- | Mock and Quickcheck instances
instance
Arbitrary
FacetDoc
where
instance
Arbitrary
FacetDoc
where
arbitrary
=
elements
[
FacetDoc
id'
(
jour
year
01
01
)
hp
fav
ngramCount
arbitrary
=
elements
[
FacetDoc
id'
(
jour
year
01
01
)
t
hp
fav
ngramCount
|
id'
<-
[
1
..
10
]
|
id'
<-
[
1
..
10
]
,
year
<-
[
1990
..
2000
]
,
year
<-
[
1990
..
2000
]
,
t
<-
[
"title"
,
"another title"
]
,
hp
<-
hyperdataDocuments
,
hp
<-
hyperdataDocuments
,
fav
<-
[
True
,
False
]
,
fav
<-
[
True
,
False
]
,
ngramCount
<-
[
3
..
100
]
,
ngramCount
<-
[
3
..
100
]
...
@@ -109,6 +113,7 @@ $(makeLensesWith abbreviatedFields ''Facet)
...
@@ -109,6 +113,7 @@ $(makeLensesWith abbreviatedFields ''Facet)
type
FacetDocRead
=
Facet
(
Column
PGInt4
)
type
FacetDocRead
=
Facet
(
Column
PGInt4
)
(
Column
PGTimestamptz
)
(
Column
PGTimestamptz
)
(
Column
PGText
)
(
Column
PGJsonb
)
(
Column
PGJsonb
)
(
Column
PGBool
)
(
Column
PGBool
)
(
Column
PGInt4
)
(
Column
PGInt4
)
...
@@ -128,8 +133,28 @@ instance Arbitrary FacetChart where
...
@@ -128,8 +133,28 @@ instance Arbitrary FacetChart where
-----------------------------------------------------------------------
-----------------------------------------------------------------------
type
Trash
=
Bool
type
Trash
=
Bool
data
OrderBy
=
DateAsc
|
DateDesc
data
OrderBy
=
DateAsc
|
DateDesc
-- | TitleAsc | TitleDesc
|
TitleAsc
|
TitleDesc
|
FavDesc
|
FavAsc
-- | NgramCount
|
FavDesc
|
FavAsc
deriving
(
Generic
,
Enum
,
Bounded
,
Read
,
Show
)
-- | NgramCoun
instance
FromHttpApiData
OrderBy
where
parseUrlPiece
"DateAsc"
=
pure
DateAsc
parseUrlPiece
"DateDesc"
=
pure
DateDesc
parseUrlPiece
"TitleAsc"
=
pure
TitleAsc
parseUrlPiece
"TitleDesc"
=
pure
TitleDesc
parseUrlPiece
"FavAsc"
=
pure
FavAsc
parseUrlPiece
"FavDesc"
=
pure
FavDesc
parseUrlPiece
_
=
Left
"Unexpected value of OrderBy"
instance
ToParamSchema
OrderBy
instance
FromJSON
OrderBy
instance
ToJSON
OrderBy
instance
ToSchema
OrderBy
instance
Arbitrary
OrderBy
where
arbitrary
=
elements
[
minBound
..
maxBound
]
viewDocuments
::
CorpusId
->
Trash
->
NodeTypeId
->
Query
FacetDocRead
viewDocuments
::
CorpusId
->
Trash
->
NodeTypeId
->
Query
FacetDocRead
viewDocuments
cId
t
ntId
=
proc
()
->
do
viewDocuments
cId
t
ntId
=
proc
()
->
do
...
@@ -139,35 +164,41 @@ viewDocuments cId t ntId = proc () -> do
...
@@ -139,35 +164,41 @@ viewDocuments cId t ntId = proc () -> do
restrict
-<
nodeNode_node1_id
nn
.==
(
pgInt4
cId
)
restrict
-<
nodeNode_node1_id
nn
.==
(
pgInt4
cId
)
restrict
-<
_node_typename
n
.==
(
pgInt4
ntId
)
restrict
-<
_node_typename
n
.==
(
pgInt4
ntId
)
restrict
-<
nodeNode_delete
nn
.==
(
pgBool
t
)
restrict
-<
nodeNode_delete
nn
.==
(
pgBool
t
)
returnA
-<
FacetDoc
(
_node_id
n
)
(
_node_date
n
)
(
_node_hyperdata
n
)
(
nodeNode_favorite
nn
)
(
pgInt4
1
)
returnA
-<
FacetDoc
(
_node_id
n
)
(
_node_date
n
)
(
_node_
name
n
)
(
_node_
hyperdata
n
)
(
nodeNode_favorite
nn
)
(
pgInt4
1
)
filterDocuments
::
(
PGOrd
date
,
PGOrd
favorite
)
=>
filterDocuments
::
(
PGOrd
date
,
PGOrd
title
,
PGOrd
favorite
)
=>
Maybe
Gargantext
.
Core
.
Types
.
Offset
Maybe
Gargantext
.
Core
.
Types
.
Offset
->
Maybe
Gargantext
.
Core
.
Types
.
Limit
->
Maybe
Gargantext
.
Core
.
Types
.
Limit
->
OrderBy
->
Maybe
OrderBy
->
Select
(
Facet
id
(
Column
date
)
hyperdata
(
Column
favorite
)
ngramCount
)
->
Select
(
Facet
id
(
Column
date
)
(
Column
title
)
hyperdata
(
Column
favorite
)
ngramCount
)
->
Query
(
Facet
id
(
Column
date
)
hyperdata
(
Column
favorite
)
ngramCount
)
->
Query
(
Facet
id
(
Column
date
)
(
Column
title
)
hyperdata
(
Column
favorite
)
ngramCount
)
filterDocuments
o
l
order
q
=
limit'
l
$
offset'
o
$
orderBy
ordering
q
filterDocuments
o
l
order
q
=
limit'
l
$
offset'
o
$
orderBy
ordering
q
where
where
ordering
=
case
order
of
ordering
=
case
order
of
DateAsc
->
asc
facetDoc_created
(
Just
DateAsc
)
->
asc
facetDoc_created
DateDesc
->
desc
facetDoc_created
(
Just
TitleAsc
)
->
asc
facetDoc_title
(
Just
TitleDesc
)
->
desc
facetDoc_title
--TitleAsc -> asc facetDoc_hyperdata
(
Just
FavAsc
)
->
asc
facetDoc_favorite
--TitleDesc -> desc facetDoc_hyperdata
(
Just
FavDesc
)
->
desc
facetDoc_favorite
_
->
desc
facetDoc_created
FavAsc
->
asc
facetDoc_favorite
FavDesc
->
desc
facetDoc_favorite
runViewDocuments
::
CorpusId
->
Trash
->
Maybe
Offset
->
Maybe
Limit
->
Maybe
OrderBy
->
Cmd
[
FacetDoc
]
runViewDocuments
cId
t
o
l
order
=
mkCmd
$
\
c
->
runViewDocuments'
c
cId
t
o
l
order
runViewDocuments
::
CorpusId
->
Trash
->
Maybe
Offset
->
Maybe
Limit
->
OrderBy
->
Cmd
[
FacetDoc
]
-- | TODO use only Cmd with Reader and delete function below
runViewDocuments
cId
t
o
l
order
=
mkCmd
$
\
c
->
runQuery
c
(
filterDocuments
o
l
order
runViewDocuments'
::
Connection
->
CorpusId
->
Trash
->
Maybe
Offset
->
Maybe
Limit
->
Maybe
OrderBy
->
IO
[
FacetDoc
]
runViewDocuments'
c
cId
t
o
l
order
=
runQuery
c
(
filterDocuments
o
l
order
$
viewDocuments
cId
t
ntId
)
$
viewDocuments
cId
t
ntId
)
where
where
ntId
=
nodeTypeId
NodeDocument
ntId
=
nodeTypeId
NodeDocument
{-
{-
getDocFacet :: Connection -> NodeType -> Int -> Maybe NodeType
getDocFacet :: Connection -> NodeType -> Int -> Maybe NodeType
-> Maybe Offset -> Maybe Limit
-> Maybe Offset -> Maybe Limit
...
...
src/Gargantext/Database/Flow.hs
View file @
1b90c03a
...
@@ -24,12 +24,11 @@ authors
...
@@ -24,12 +24,11 @@ authors
module
Gargantext.Database.Flow
module
Gargantext.Database.Flow
where
where
import
System.FilePath
(
FilePath
)
import
System.FilePath
(
FilePath
)
import
GHC.Base
((
>>
))
import
Data.Maybe
(
Maybe
(
..
))
import
Data.Maybe
(
Maybe
(
..
))
import
Gargantext.Core.Types
(
NodePoly
(
..
))
import
Gargantext.Core.Types
(
NodePoly
(
..
))
import
Gargantext.Prelude
import
Gargantext.Prelude
import
Gargantext.Database.Bashql
(
runCmd'
,
del
)
import
Gargantext.Database.Bashql
(
runCmd'
,
del
)
import
Gargantext.Database.Node
(
Cmd
(
..
),
getRoot
,
mkRoot
,
mkCorpus
)
import
Gargantext.Database.Node
(
getRoot
,
mkRoot
,
mkCorpus
)
import
Gargantext.Database.User
(
getUser
,
UserLight
(
..
),
Username
)
import
Gargantext.Database.User
(
getUser
,
UserLight
(
..
),
Username
)
import
Gargantext.Database.Node.Document.Insert
(
insertDocuments
,
ReturnId
(
reId
))
import
Gargantext.Database.Node.Document.Insert
(
insertDocuments
,
ReturnId
(
reId
))
import
Gargantext.Database.Node.Document.Add
(
add
)
import
Gargantext.Database.Node.Document.Add
(
add
)
...
@@ -64,7 +63,7 @@ subFlow username = do
...
@@ -64,7 +63,7 @@ subFlow username = do
pure
(
userId
,
rootId
,
corpusId
)
pure
(
userId
,
rootId
,
corpusId
)
-- flow :: FilePath -> IO ()
flow
::
FilePath
->
IO
Int
flow
fp
=
do
flow
fp
=
do
(
masterUserId
,
_
,
corpusId
)
<-
subFlow
"gargantua"
(
masterUserId
,
_
,
corpusId
)
<-
subFlow
"gargantua"
...
@@ -76,18 +75,10 @@ flow fp = do
...
@@ -76,18 +75,10 @@ flow fp = do
idsRepeat
<-
runCmd'
$
insertDocuments
masterUserId
corpusId
docs
idsRepeat
<-
runCmd'
$
insertDocuments
masterUserId
corpusId
docs
printDebug
"Docs IDs : "
idsRepeat
printDebug
"Docs IDs : "
idsRepeat
(
userId
,
rootId
,
corpusId2
)
<-
subFlow
"alexandre"
(
_
,
_
,
corpusId2
)
<-
subFlow
"alexandre"
inserted
<-
runCmd'
$
add
corpusId2
(
map
reId
ids
)
inserted
<-
runCmd'
$
add
corpusId2
(
map
reId
ids
)
printDebug
"Inserted : "
inserted
printDebug
"Inserted : "
inserted
-- runCmd' (del [corpusId2, corpusId])
runCmd'
(
del
[
corpusId2
,
corpusId
])
{-
ids <- add (Documents corpusId) docs
user_id <- runCmd' (get RootUser "alexandre")
rootUser_id <- runCmd' (getRootUser $ userLight_id user_id
corpusId <- mk Corpus
-}
src/Gargantext/Database/Node/Document/Add.hs
View file @
1b90c03a
...
@@ -20,25 +20,18 @@ Add Documents/Contact to a Corpus/Annuaire.
...
@@ -20,25 +20,18 @@ Add Documents/Contact to a Corpus/Annuaire.
------------------------------------------------------------------------
------------------------------------------------------------------------
module
Gargantext.Database.Node.Document.Add
where
module
Gargantext.Database.Node.Document.Add
where
import
Control.Lens
(
set
)
import
Data.Aeson
(
toJSON
,
Value
)
import
Data.ByteString.Internal
(
ByteString
)
import
Data.ByteString.Internal
(
ByteString
)
import
Data.Maybe
(
maybe
)
import
Data.Typeable
(
Typeable
)
import
Data.Typeable
(
Typeable
)
import
Database.PostgreSQL.Simple
(
Connection
,
FromRow
,
Query
,
formatQuery
,
query
,
Only
(
..
))
import
Database.PostgreSQL.Simple
(
Query
,
formatQuery
,
query
,
Only
(
..
))
import
Database.PostgreSQL.Simple.FromRow
(
fromRow
,
field
)
import
Database.PostgreSQL.Simple.SqlQQ
import
Database.PostgreSQL.Simple.SqlQQ
import
Database.PostgreSQL.Simple.ToField
(
toField
)
import
Database.PostgreSQL.Simple.ToField
(
toField
)
import
Database.PostgreSQL.Simple.ToRow
(
ToRow
(
..
))
import
Database.PostgreSQL.Simple.ToRow
(
ToRow
(
..
))
import
Database.PostgreSQL.Simple.Types
(
Values
(
..
),
QualifiedIdentifier
(
..
))
import
Database.PostgreSQL.Simple.Types
(
Values
(
..
),
QualifiedIdentifier
(
..
))
import
Data.Text
(
Text
)
import
Data.Text
(
Text
)
import
qualified
Data.Text
as
DT
(
pack
,
unpack
,
concat
)
import
qualified
Data.Text
as
DT
(
pack
)
import
qualified
Data.Digest.Pure.SHA
as
SHA
(
sha256
,
showDigest
)
import
qualified
Data.ByteString.Lazy.Char8
as
DC
(
pack
)
import
Gargantext.Database.Config
(
nodeTypeId
)
import
Gargantext.Database.Node
(
mkCmd
,
Cmd
(
..
))
import
Gargantext.Database.Node
(
mkCmd
,
Cmd
(
..
))
import
Gargantext.Database.Types.Node
import
Gargantext.Database.Types.Node
import
Gargantext.Prelude
import
Gargantext.Prelude
...
...
src/Gargantext/Database/Node/Document/Insert.hs
View file @
1b90c03a
...
@@ -49,11 +49,12 @@ the concatenation of the parameters defined by @hashParameters@.
...
@@ -49,11 +49,12 @@ the concatenation of the parameters defined by @hashParameters@.
-}
-}
------------------------------------------------------------------------
------------------------------------------------------------------------
{-# LANGUAGE DeriveDataTypeable #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE QuasiQuotes #-}
{-# LANGUAGE QuasiQuotes #-}
{-# LANGUAGE DeriveDataTypeable #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE TypeSynonymInstances #-}
{-# LANGUAGE TypeSynonymInstances #-}
------------------------------------------------------------------------
------------------------------------------------------------------------
module
Gargantext.Database.Node.Document.Insert
where
module
Gargantext.Database.Node.Document.Insert
where
...
@@ -64,7 +65,7 @@ import Data.Aeson (toJSON, Value)
...
@@ -64,7 +65,7 @@ import Data.Aeson (toJSON, Value)
import
Data.ByteString.Internal
(
ByteString
)
import
Data.ByteString.Internal
(
ByteString
)
import
Data.Maybe
(
maybe
)
import
Data.Maybe
(
maybe
)
import
Data.Typeable
(
Typeable
)
import
Data.Typeable
(
Typeable
)
import
Database.PostgreSQL.Simple
(
Connection
,
FromRow
,
Query
,
formatQuery
,
query
,
Only
(
..
))
import
Database.PostgreSQL.Simple
(
FromRow
,
Query
,
formatQuery
,
query
,
Only
(
..
))
import
Database.PostgreSQL.Simple.FromRow
(
fromRow
,
field
)
import
Database.PostgreSQL.Simple.FromRow
(
fromRow
,
field
)
import
Database.PostgreSQL.Simple.SqlQQ
import
Database.PostgreSQL.Simple.SqlQQ
import
Database.PostgreSQL.Simple.ToField
(
toField
)
import
Database.PostgreSQL.Simple.ToField
(
toField
)
...
@@ -149,7 +150,9 @@ queryInsert = [sql|
...
@@ -149,7 +150,9 @@ 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
(
maybe
"No Title of Document"
identity
$
_hyperdataDocument_title
h
)
(
toJSON
$
addUniqId
h
)
)
where
where
tId
=
nodeTypeId
NodeDocument
tId
=
nodeTypeId
NodeDocument
...
@@ -192,15 +195,6 @@ instance ToRow InputData where
...
@@ -192,15 +195,6 @@ instance ToRow InputData where
---------------------------------------------------------------------------
---------------------------------------------------------------------------
-- * Uniqueness of document definition
-- * Uniqueness of document definition
hashParameters
::
[(
HyperdataDocument
->
Text
)]
hashParameters
=
[
\
d
->
maybe'
(
_hyperdataDocument_title
d
)
,
\
d
->
maybe'
(
_hyperdataDocument_abstract
d
)
,
\
d
->
maybe'
(
_hyperdataDocument_source
d
)
,
\
d
->
maybe'
(
_hyperdataDocument_publication_date
d
)
]
maybe'
=
maybe
(
DT
.
pack
""
)
identity
addUniqId
::
HyperdataDocument
->
HyperdataDocument
addUniqId
::
HyperdataDocument
->
HyperdataDocument
addUniqId
doc
=
set
hyperdataDocument_uniqIdBdd
(
Just
hashBdd
)
addUniqId
doc
=
set
hyperdataDocument_uniqIdBdd
(
Just
hashBdd
)
$
set
hyperdataDocument_uniqId
(
Just
hash
)
doc
$
set
hyperdataDocument_uniqId
(
Just
hash
)
doc
...
@@ -211,5 +205,16 @@ addUniqId doc = set hyperdataDocument_uniqIdBdd (Just hashBdd)
...
@@ -211,5 +205,16 @@ addUniqId doc = set hyperdataDocument_uniqIdBdd (Just hashBdd)
uniqId
::
Text
->
Text
uniqId
::
Text
->
Text
uniqId
=
DT
.
pack
.
SHA
.
showDigest
.
SHA
.
sha256
.
DC
.
pack
.
DT
.
unpack
uniqId
=
DT
.
pack
.
SHA
.
showDigest
.
SHA
.
sha256
.
DC
.
pack
.
DT
.
unpack
hashParameters
::
[(
HyperdataDocument
->
Text
)]
hashParameters
=
[
\
d
->
maybe'
(
_hyperdataDocument_title
d
)
,
\
d
->
maybe'
(
_hyperdataDocument_abstract
d
)
,
\
d
->
maybe'
(
_hyperdataDocument_source
d
)
,
\
d
->
maybe'
(
_hyperdataDocument_publication_date
d
)
]
maybe'
::
Maybe
Text
->
Text
maybe'
=
maybe
(
DT
.
pack
""
)
identity
---------------------------------------------------------------------------
---------------------------------------------------------------------------
src/Gargantext/Database/NodeNode.hs
View file @
1b90c03a
...
@@ -27,7 +27,6 @@ import Gargantext.Prelude
...
@@ -27,7 +27,6 @@ import Gargantext.Prelude
import
Data.Maybe
(
Maybe
)
import
Data.Maybe
(
Maybe
)
import
Data.Profunctor.Product.TH
(
makeAdaptorAndInstance
)
import
Data.Profunctor.Product.TH
(
makeAdaptorAndInstance
)
import
Control.Lens.TH
(
makeLensesWith
,
abbreviatedFields
)
import
Control.Lens.TH
(
makeLensesWith
,
abbreviatedFields
)
import
qualified
Database.PostgreSQL.Simple
as
PGS
import
Opaleye
import
Opaleye
...
...
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