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
44a2d2ad
Commit
44a2d2ad
authored
Jul 24, 2020
by
Przemyslaw Kaminski
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[ngrams] fix version bumpup after new term added
parent
42b94fad
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
53 additions
and
37 deletions
+53
-37
Ngrams.hs
src/Gargantext/API/Ngrams.hs
+53
-37
No files found.
src/Gargantext/API/Ngrams.hs
View file @
44a2d2ad
...
@@ -77,6 +77,7 @@ module Gargantext.API.Ngrams
...
@@ -77,6 +77,7 @@ module Gargantext.API.Ngrams
-- Internals
-- Internals
,
getNgramsTableMap
,
getNgramsTableMap
,
dumpJsonTableMap
,
tableNgramsPull
,
tableNgramsPull
,
tableNgramsPut
,
tableNgramsPut
...
@@ -98,22 +99,40 @@ import Control.Monad.State
...
@@ -98,22 +99,40 @@ import Control.Monad.State
import
Control.Monad.Trans.Control
(
MonadBaseControl
)
import
Control.Monad.Trans.Control
(
MonadBaseControl
)
import
Data.Aeson
hiding
((
.=
))
import
Data.Aeson
hiding
((
.=
))
import
Data.Aeson.TH
(
deriveJSON
)
import
Data.Aeson.TH
(
deriveJSON
)
import
Data.Either
(
Either
(
Left
))
import
qualified
Data.Aeson.Text
as
DAT
import
Data.Either
.Extra
(
maybeToEither
)
import
Data.Either
(
Either
(
Left
)
)
import
Data.Foldable
import
Data.Foldable
import
qualified
Data.HashMap.Strict.InsOrd
as
InsOrdHashMap
import
qualified
Data.List
as
List
import
Data.Map.Strict
(
Map
)
import
Data.Map.Strict
(
Map
)
import
qualified
Data.Map.Strict
as
Map
import
qualified
Data.Map.Strict.Patch
as
PM
import
Data.Maybe
(
fromMaybe
)
import
Data.Maybe
(
fromMaybe
)
import
Data.Monoid
import
Data.Monoid
import
Data.Ord
(
Down
(
..
))
import
Data.Ord
(
Down
(
..
))
import
Data.Patch.Class
(
Replace
,
replace
,
Action
(
act
),
Applicable
(
..
),
Composable
(
..
),
Transformable
(
..
),
PairPatch
(
..
),
Patched
,
ConflictResolution
,
ConflictResolutionReplace
,
ours
)
import
Data.Patch.Class
(
Replace
,
replace
,
Action
(
act
),
Applicable
(
..
),
Composable
(
..
),
Transformable
(
..
),
PairPatch
(
..
),
Patched
,
ConflictResolution
,
ConflictResolutionReplace
,
ours
)
import
Data.Set
(
Set
)
import
Data.Set
(
Set
)
import
qualified
Data.Set
as
S
import
qualified
Data.Set
as
Set
import
Data.Swagger
hiding
(
version
,
patch
)
import
Data.Swagger
hiding
(
version
,
patch
)
import
Data.Text
(
Text
,
isInfixOf
,
count
)
import
Data.Text
(
Text
,
count
,
isInfixOf
,
unpack
)
import
Data.Text.Lazy.IO
as
DTL
import
Data.Validity
import
Data.Validity
import
Database.PostgreSQL.Simple.FromField
(
FromField
,
fromField
)
import
Database.PostgreSQL.Simple.FromField
(
FromField
,
fromField
)
import
Formatting
(
hprint
,
int
,
(
%
))
import
Formatting
(
hprint
,
int
,
(
%
))
import
Formatting.Clock
(
timeSpecs
)
import
Formatting.Clock
(
timeSpecs
)
import
GHC.Generics
(
Generic
)
import
GHC.Generics
(
Generic
)
import
Servant
hiding
(
Patch
)
import
System.Clock
(
getTime
,
TimeSpec
,
Clock
(
..
))
import
System.FileLock
(
FileLock
)
import
System.IO
(
stderr
)
import
Test.QuickCheck
(
elements
)
import
Test.QuickCheck.Arbitrary
(
Arbitrary
,
arbitrary
)
import
Prelude
(
error
)
import
Protolude
(
maybeToEither
)
import
Gargantext.Prelude
import
Gargantext.Core.Types
(
ListType
(
..
),
NodeId
,
ListId
,
DocId
,
Limit
,
Offset
,
HasInvalidError
,
assertValid
)
import
Gargantext.Core.Types
(
ListType
(
..
),
NodeId
,
ListId
,
DocId
,
Limit
,
Offset
,
HasInvalidError
,
assertValid
)
import
Gargantext.Core.Types
(
TODO
)
import
Gargantext.Core.Types
(
TODO
)
import
Gargantext.Core.Utils.Prefix
(
unPrefix
,
unPrefixSwagger
,
wellNamedSchema
)
import
Gargantext.Core.Utils.Prefix
(
unPrefix
,
unPrefixSwagger
,
wellNamedSchema
)
...
@@ -124,20 +143,6 @@ import Gargantext.Database.Admin.Config (userMaster)
...
@@ -124,20 +143,6 @@ import Gargantext.Database.Admin.Config (userMaster)
import
Gargantext.Database.Query.Table.Node.Error
(
HasNodeError
)
import
Gargantext.Database.Query.Table.Node.Error
(
HasNodeError
)
import
Gargantext.Database.Admin.Types.Node
(
NodeType
(
..
))
import
Gargantext.Database.Admin.Types.Node
(
NodeType
(
..
))
import
Gargantext.Database.Prelude
(
fromField'
,
HasConnectionPool
,
HasConfig
)
import
Gargantext.Database.Prelude
(
fromField'
,
HasConnectionPool
,
HasConfig
)
import
Gargantext.Prelude
import
Prelude
(
Enum
,
Bounded
,
Semigroup
(
..
),
minBound
,
maxBound
{-, round-}
,
error
)
import
Servant
hiding
(
Patch
)
import
System.Clock
(
getTime
,
TimeSpec
,
Clock
(
..
))
import
System.FileLock
(
FileLock
)
import
System.IO
(
stderr
)
import
Test.QuickCheck
(
elements
)
import
Test.QuickCheck.Arbitrary
(
Arbitrary
,
arbitrary
)
import
qualified
Data.HashMap.Strict.InsOrd
as
InsOrdHashMap
import
qualified
Data.List
as
List
import
qualified
Data.Map.Strict
as
Map
import
qualified
Data.Map.Strict.Patch
as
PM
import
qualified
Data.Set
as
S
import
qualified
Data.Set
as
Set
import
qualified
Gargantext.Database.Query.Table.Ngrams
as
TableNgrams
import
qualified
Gargantext.Database.Query.Table.Ngrams
as
TableNgrams
------------------------------------------------------------------------
------------------------------------------------------------------------
...
@@ -893,31 +898,32 @@ putListNgrams :: RepoCmdM env err m
...
@@ -893,31 +898,32 @@ putListNgrams :: RepoCmdM env err m
->
TableNgrams
.
NgramsType
->
TableNgrams
.
NgramsType
->
[
NgramsElement
]
->
m
()
->
[
NgramsElement
]
->
m
()
putListNgrams
_
_
[]
=
pure
()
putListNgrams
_
_
[]
=
pure
()
putListNgrams
listId
ngramsType
nes
=
putListNgrams'
list
Id
ngramsType
m
putListNgrams
nodeId
ngramsType
nes
=
putListNgrams'
node
Id
ngramsType
m
where
where
m
=
Map
.
fromList
$
map
(
\
n
->
(
n
^.
ne_ngrams
,
ngramsElementToRepo
n
))
nes
m
=
Map
.
fromList
$
map
(
\
n
->
(
n
^.
ne_ngrams
,
ngramsElementToRepo
n
))
nes
putListNgrams'
::
RepoCmdM
env
err
m
putListNgrams'
::
RepoCmdM
env
err
m
=>
List
Id
=>
Node
Id
->
TableNgrams
.
NgramsType
->
TableNgrams
.
NgramsType
->
Map
NgramsTerm
NgramsRepoElement
->
Map
NgramsTerm
NgramsRepoElement
->
m
()
->
m
()
putListNgrams'
listId
ngramsType
ns
=
do
putListNgrams'
nodeId
ngramsType
ns
=
do
-- printDebug "putListNgrams" (length nes)
printDebug
"[putLictNgrams'] nodeId"
nodeId
printDebug
"[putLictNgrams'] ngramsType"
ngramsType
printDebug
"[putListNgrams'] ns"
ns
var
<-
view
repoVar
var
<-
view
repoVar
liftBase
$
modifyMVar_
var
$
liftBase
$
modifyMVar_
var
$
\
r
->
do
pure
.
(
r_state
pure
$
r
&
r_version
+~
1
.
at
ngramsType
%~
&
r_state
.
at
ngramsType
%~
(
Just
.
(
Just
.
(
at
listId
%~
(
at
nodeId
%~
(
Just
(
Just
.
(
<>
ns
)
.
(
<>
ns
)
.
something
.
something
)
)
)
.
something
)
)
.
something
)
)
saveRepo
saveRepo
...
@@ -927,8 +933,8 @@ tableNgramsPost :: RepoCmdM env err m
...
@@ -927,8 +933,8 @@ tableNgramsPost :: RepoCmdM env err m
->
NodeId
->
NodeId
->
Maybe
ListType
->
Maybe
ListType
->
[
NgramsTerm
]
->
m
()
->
[
NgramsTerm
]
->
m
()
tableNgramsPost
tabType
list
Id
mayList
=
tableNgramsPost
tabType
node
Id
mayList
=
putListNgrams
list
Id
(
ngramsTypeFromTabType
tabType
)
.
fmap
(
newNgramsElement
mayList
)
putListNgrams
node
Id
(
ngramsTypeFromTabType
tabType
)
.
fmap
(
newNgramsElement
mayList
)
currentVersion
::
RepoCmdM
env
err
m
currentVersion
::
RepoCmdM
env
err
m
=>
m
Version
=>
m
Version
...
@@ -978,8 +984,8 @@ tableNgramsPut tabType listId (Versioned p_version p_table)
...
@@ -978,8 +984,8 @@ tableNgramsPut tabType listId (Versioned p_version p_table)
q
=
mconcat
$
take
(
r
^.
r_version
-
p_version
)
(
r
^.
r_history
)
q
=
mconcat
$
take
(
r
^.
r_version
-
p_version
)
(
r
^.
r_history
)
(
p'
,
q'
)
=
transformWith
ngramsStatePatchConflictResolution
p
q
(
p'
,
q'
)
=
transformWith
ngramsStatePatchConflictResolution
p
q
r'
=
r
&
r_version
+~
1
r'
=
r
&
r_version
+~
1
&
r_state
%~
act
p'
&
r_state
%~
act
p'
&
r_history
%~
(
p'
:
)
&
r_history
%~
(
p'
:
)
q'_table
=
q'
^.
_PatchMap
.
at
ngramsType
.
_Just
.
_PatchMap
.
at
listId
.
_Just
q'_table
=
q'
^.
_PatchMap
.
at
ngramsType
.
_Just
.
_PatchMap
.
at
listId
.
_Just
{-
{-
-- Ideally we would like to check these properties. However:
-- Ideally we would like to check these properties. However:
...
@@ -1008,7 +1014,7 @@ mergeNgramsElement _neOld neNew = neNew
...
@@ -1008,7 +1014,7 @@ mergeNgramsElement _neOld neNew = neNew
-}
-}
getNgramsTableMap
::
RepoCmdM
env
err
m
getNgramsTableMap
::
RepoCmdM
env
err
m
=>
List
Id
=>
Node
Id
->
TableNgrams
.
NgramsType
->
TableNgrams
.
NgramsType
->
m
(
Versioned
NgramsTableMap
)
->
m
(
Versioned
NgramsTableMap
)
getNgramsTableMap
nodeId
ngramsType
=
do
getNgramsTableMap
nodeId
ngramsType
=
do
...
@@ -1017,6 +1023,16 @@ getNgramsTableMap nodeId ngramsType = do
...
@@ -1017,6 +1023,16 @@ getNgramsTableMap nodeId ngramsType = do
pure
$
Versioned
(
repo
^.
r_version
)
pure
$
Versioned
(
repo
^.
r_version
)
(
repo
^.
r_state
.
at
ngramsType
.
_Just
.
at
nodeId
.
_Just
)
(
repo
^.
r_state
.
at
ngramsType
.
_Just
.
at
nodeId
.
_Just
)
dumpJsonTableMap
::
RepoCmdM
env
err
m
=>
Text
->
NodeId
->
TableNgrams
.
NgramsType
->
m
()
dumpJsonTableMap
fpath
nodeId
ngramsType
=
do
m
<-
getNgramsTableMap
nodeId
ngramsType
liftBase
$
DTL
.
writeFile
(
unpack
fpath
)
(
DAT
.
encodeToLazyText
m
)
pure
()
type
MinSize
=
Int
type
MinSize
=
Int
type
MaxSize
=
Int
type
MaxSize
=
Int
...
...
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