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
7d909e60
Commit
7d909e60
authored
Feb 28, 2020
by
Alexandre Delanoë
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[API] get / put NgramsList (todo: tests)
parent
62d9bdc6
Changes
6
Show whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
155 additions
and
38 deletions
+155
-38
API.hs
src/Gargantext/API.hs
+8
-1
Export.hs
src/Gargantext/API/Export.hs
+0
-2
Ngrams.hs
src/Gargantext/API/Ngrams.hs
+80
-33
List.hs
src/Gargantext/API/Ngrams/List.hs
+57
-0
List.hs
src/Gargantext/Database/Flow/List.hs
+1
-1
Ngrams.hs
src/Gargantext/Database/Schema/Ngrams.hs
+9
-1
No files found.
src/Gargantext/API.hs
View file @
7d909e60
...
...
@@ -92,6 +92,7 @@ import Gargantext.API.Search (SearchPairsAPI, searchPairs)
import
Gargantext.API.Types
import
qualified
Gargantext.API.Annuaire
as
Annuaire
import
qualified
Gargantext.API.Export
as
Export
import
qualified
Gargantext.API.Ngrams.List
as
List
import
qualified
Gargantext.API.Corpus.New
as
New
import
Gargantext.Database.Types.Node
import
Gargantext.Database.Types.Node
(
NodeId
,
CorpusId
,
AnnuaireId
)
...
...
@@ -257,7 +258,7 @@ type GargPrivateAPI' =
:>
Capture
"node_id"
NodeId
:>
NodeAPI
HyperdataAny
-- Corpus endpoint
-- Corpus endpoint
s
:<|>
"corpus"
:>
Summary
"Corpus endpoint"
:>
Capture
"corpus_id"
CorpusId
:>
NodeAPI
HyperdataCorpus
...
...
@@ -314,6 +315,11 @@ type GargPrivateAPI' =
-- :<|> New.AddWithFile
-- :<|> "scraper" :> WithCallbacks ScraperAPI
-- :<|> "new" :> New.Api
:<|>
"list"
:>
Summary
"List export API"
:>
Capture
"listId"
ListId
:>
List
.
API
:<|>
"fib"
:>
Summary
"Fib test"
:>
Capture
"x"
Int
:>
FibAPI
-- Get '[JSON] Int
...
...
@@ -404,6 +410,7 @@ serverPrivateGargAPI' (AuthenticatedUser (NodeId uid))
:<|>
addAnnuaireWithForm
-- :<|> New.api uid -- TODO-SECURITY
-- :<|> New.info uid -- TODO-SECURITY
:<|>
List
.
api
:<|>
fibAPI
...
...
src/Gargantext/API/Export.hs
View file @
7d909e60
...
...
@@ -11,10 +11,8 @@ Main exports of Gargantext:
- corpus
- document and ngrams
- lists
-}
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE FlexibleContexts #-}
...
...
src/Gargantext/API/Ngrams.hs
View file @
7d909e60
...
...
@@ -40,12 +40,14 @@ module Gargantext.API.Ngrams
,
getTableNgrams
,
putListNgrams
,
putListNgrams'
,
tableNgramsPost
,
apiNgramsTableCorpus
,
apiNgramsTableDoc
,
NgramsStatePatch
,
NgramsTablePatch
,
NgramsTableMap
,
NgramsElement
(
..
)
,
mkNgramsElement
...
...
@@ -85,6 +87,7 @@ module Gargantext.API.Ngrams
,
tableNgramsPull
,
tableNgramsPut
,
Version
,
Versioned
(
..
)
,
currentVersion
,
listNgramsChangedSince
...
...
@@ -239,6 +242,10 @@ data NgramsRepoElement = NgramsRepoElement
deriveJSON
(
unPrefix
"_nre_"
)
''
N
gramsRepoElement
makeLenses
''
N
gramsRepoElement
instance
ToSchema
NgramsRepoElement
where
declareNamedSchema
=
genericDeclareNamedSchema
(
unPrefixSwagger
"_nre_"
)
data
NgramsElement
=
NgramsElement
{
_ne_ngrams
::
NgramsTerm
,
_ne_size
::
Int
...
...
@@ -253,7 +260,11 @@ data NgramsElement =
deriveJSON
(
unPrefix
"_ne_"
)
''
N
gramsElement
makeLenses
''
N
gramsElement
mkNgramsElement
::
NgramsTerm
->
ListType
->
Maybe
RootParent
->
MSet
NgramsTerm
->
NgramsElement
mkNgramsElement
::
NgramsTerm
->
ListType
->
Maybe
RootParent
->
MSet
NgramsTerm
->
NgramsElement
mkNgramsElement
ngrams
list
rp
children
=
NgramsElement
ngrams
size
list
1
(
_rp_root
<$>
rp
)
(
_rp_parent
<$>
rp
)
children
where
...
...
@@ -261,7 +272,8 @@ mkNgramsElement ngrams list rp children =
size
=
1
+
count
" "
ngrams
newNgramsElement
::
Maybe
ListType
->
NgramsTerm
->
NgramsElement
newNgramsElement
mayList
ngrams
=
mkNgramsElement
ngrams
(
fromMaybe
GraphTerm
mayList
)
Nothing
mempty
newNgramsElement
mayList
ngrams
=
mkNgramsElement
ngrams
(
fromMaybe
GraphTerm
mayList
)
Nothing
mempty
instance
ToSchema
NgramsElement
where
declareNamedSchema
=
genericDeclareNamedSchema
(
unPrefixSwagger
"_ne_"
)
...
...
@@ -313,7 +325,7 @@ ngramsElementFromRepo
newtype
NgramsTable
=
NgramsTable
[
NgramsElement
]
deriving
(
Ord
,
Eq
,
Generic
,
ToJSON
,
FromJSON
,
Show
)
type
ListNgrams
=
NgramsTable
type
NgramsList
=
NgramsTable
makePrisms
''
N
gramsTable
...
...
@@ -372,7 +384,6 @@ instance ToSchema NgramsTable
------------------------------------------------------------------------
type
NgramsTableMap
=
Map
NgramsTerm
NgramsRepoElement
------------------------------------------------------------------------
-- On the Client side:
--data Action = InGroup NgramsId NgramsId
...
...
@@ -847,21 +858,44 @@ putListNgrams :: RepoCmdM env err m
=>
NodeId
->
NgramsType
->
[
NgramsElement
]
->
m
()
putListNgrams
_
_
[]
=
pure
()
putListNgrams
listId
ngramsType
nes
=
do
putListNgrams
listId
ngramsType
nes
=
putListNgrams'
listId
ngramsType
m
where
m
=
Map
.
fromList
$
map
(
\
n
->
(
n
^.
ne_ngrams
,
ngramsElementToRepo
n
))
nes
putListNgrams'
::
RepoCmdM
env
err
m
=>
ListId
->
NgramsType
->
Map
NgramsTerm
NgramsRepoElement
->
m
()
putListNgrams'
listId
ngramsType
ns
=
do
-- printDebug "putListNgrams" (length nes)
var
<-
view
repoVar
liftIO
$
modifyMVar_
var
$
pure
.
(
r_state
.
at
ngramsType
%~
(
Just
.
(
at
listId
%~
(
Just
.
(
<>
m
)
.
something
))
.
something
))
pure
.
(
r_state
.
at
ngramsType
%~
(
Just
.
(
at
listId
%~
(
Just
.
(
<>
ns
)
.
something
)
)
.
something
)
)
saveRepo
where
m
=
Map
.
fromList
$
(
\
n
->
(
n
^.
ne_ngrams
,
ngramsElementToRepo
n
))
<$>
nes
-- TODO-ACCESS check
tableNgramsPost
::
RepoCmdM
env
err
m
=>
TabType
->
NodeId
->
Maybe
ListType
->
[
NgramsTerm
]
->
m
()
tableNgramsPost
::
RepoCmdM
env
err
m
=>
TabType
->
NodeId
->
Maybe
ListType
->
[
NgramsTerm
]
->
m
()
tableNgramsPost
tabType
listId
mayList
=
putListNgrams
listId
(
ngramsTypeFromTabType
tabType
)
.
fmap
(
newNgramsElement
mayList
)
currentVersion
::
RepoCmdM
env
err
m
=>
m
Version
currentVersion
::
RepoCmdM
env
err
m
=>
m
Version
currentVersion
=
do
var
<-
view
repoVar
r
<-
liftIO
$
readMVar
var
...
...
@@ -937,7 +971,9 @@ mergeNgramsElement _neOld neNew = neNew
-}
getNgramsTableMap
::
RepoCmdM
env
err
m
=>
NodeId
->
NgramsType
->
m
(
Versioned
NgramsTableMap
)
=>
ListId
->
NgramsType
->
m
(
Versioned
NgramsTableMap
)
getNgramsTableMap
nodeId
ngramsType
=
do
v
<-
view
repoVar
repo
<-
liftIO
$
readMVar
v
...
...
@@ -1172,9 +1208,20 @@ apiNgramsTableDoc dId = getTableNgramsDoc dId
-- > add new ngrams in database (TODO AD)
-- > index all the corpus accordingly (TODO AD)
listNgramsChangedSince
::
RepoCmdM
env
err
m
=>
ListId
->
NgramsType
->
Version
->
m
(
Versioned
Bool
)
listNgramsChangedSince
::
RepoCmdM
env
err
m
=>
ListId
->
NgramsType
->
Version
->
m
(
Versioned
Bool
)
listNgramsChangedSince
listId
ngramsType
version
|
version
<
0
=
Versioned
<$>
currentVersion
<*>
pure
True
|
otherwise
=
tableNgramsPull
listId
ngramsType
version
&
mapped
.
v_data
%~
(
==
mempty
)
-- Instances
instance
Arbitrary
NgramsRepoElement
where
arbitrary
=
elements
$
map
ngramsElementToRepo
ns
where
NgramsTable
ns
=
mockTable
src/Gargantext/API/Ngrams/List.hs
0 → 100644
View file @
7d909e60
{-|
Module : Gargantext.API.Ngrams.List
Description : Get Ngrams (lists)
Copyright : (c) CNRS, 2017-Present
License : AGPL + CECILL v3
Maintainer : team@gargantext.org
Stability : experimental
Portability : POSIX
-}
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RankNTypes #-}
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE TypeOperators #-}
module
Gargantext.API.Ngrams.List
where
import
Gargantext.Prelude
import
Gargantext.API.Ngrams
import
Servant
import
Data.List
(
zip
)
import
Data.Map
(
Map
,
toList
,
fromList
)
import
Gargantext.Database.Types.Node
import
Gargantext.Database.Schema.Ngrams
(
NgramsType
(
..
),
ngramsTypes
)
import
Gargantext.Database.Flow
(
FlowCmdM
)
import
Gargantext.API.Types
(
GargServer
)
import
Gargantext.API.Ngrams
(
putListNgrams'
)
type
NgramsList
=
(
Map
NgramsType
(
Versioned
NgramsTableMap
))
type
API
=
Get
'[
J
SON
]
NgramsList
:<|>
ReqBody
'[
J
SON
]
NgramsList
:>
Put
'[
J
SON
]
Bool
api
::
ListId
->
GargServer
API
api
l
=
get
l
:<|>
put
l
get
::
RepoCmdM
env
err
m
=>
ListId
->
m
NgramsList
get
lId
=
fromList
<$>
zip
ngramsTypes
<$>
mapM
(
getNgramsTableMap
lId
)
ngramsTypes
put
::
FlowCmdM
env
err
m
=>
ListId
->
NgramsList
->
m
Bool
put
l
m
=
do
-- TODO check with Version for optim
_
<-
mapM
(
\
(
nt
,
Versioned
_v
ns
)
->
putListNgrams'
l
nt
ns
)
$
toList
m
pure
True
src/Gargantext/Database/Flow/List.hs
View file @
7d909e60
...
...
@@ -102,6 +102,6 @@ listInsert :: FlowCmdM env err m
listInsert
lId
ngs
=
mapM_
(
\
(
typeList
,
ngElmts
)
->
putListNgrams
lId
typeList
ngElmts
)
$
toList
ngs
------------------------------------------------------------------------
------------------------------------------------------------------------
src/Gargantext/Database/Schema/Ngrams.hs
View file @
7d909e60
...
...
@@ -46,7 +46,7 @@ import Gargantext.Prelude
import
Opaleye
hiding
(
FromField
)
import
Servant
(
FromHttpApiData
,
parseUrlPiece
,
Proxy
(
..
))
import
Text.Read
(
read
)
import
Data.Swagger
(
ToParamSchema
,
toParamSchema
)
import
Data.Swagger
(
ToParamSchema
,
toParamSchema
,
ToSchema
)
import
Prelude
(
Enum
,
Bounded
,
minBound
,
maxBound
,
Functor
)
import
qualified
Database.PostgreSQL.Simple
as
PGS
...
...
@@ -100,6 +100,14 @@ dbGetNgramsDb = runOpaQuery queryNgramsTable
data
NgramsType
=
Authors
|
Institutes
|
Sources
|
NgramsTerms
deriving
(
Eq
,
Show
,
Read
,
Ord
,
Enum
,
Bounded
,
Generic
)
ngramsTypes
::
[
NgramsType
]
ngramsTypes
=
[
minBound
..
]
instance
ToSchema
NgramsType
{- where
declareNamedSchema = genericDeclareNamedSchema (unPrefixSwagger "_nre_")
-}
instance
FromJSON
NgramsType
instance
FromJSONKey
NgramsType
where
fromJSONKey
=
FromJSONKeyTextParser
(
parseJSON
.
String
)
...
...
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