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
148
Issues
148
List
Board
Labels
Milestones
Merge Requests
11
Merge Requests
11
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
3adb45fc
Commit
3adb45fc
authored
Jul 06, 2022
by
Przemyslaw Kaminski
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[NodeStory] this compiles, CmdM helped
parent
26d3492e
Pipeline
#3004
failed with stage
in 59 minutes and 27 seconds
Changes
1
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
16 additions
and
16 deletions
+16
-16
NodeStory.hs
src/Gargantext/Database/NodeStory.hs
+16
-16
No files found.
src/Gargantext/Database/NodeStory.hs
View file @
3adb45fc
...
...
@@ -15,7 +15,7 @@ import Gargantext.Core.Mail.Types (HasMail)
import
Gargantext.Core.NodeStory
(
Archive
(
..
),
NodeStory
(
..
),
NodeListStory
,
NgramsState
'
,
NgramsStatePatch
'
)
import
qualified
Gargantext.Core.NodeStory
as
NS
import
Gargantext.Core.Types
(
NodeId
(
..
),
NodeType
(
..
))
import
Gargantext.Database.Prelude
(
Cmd
,
mkCmd
,
runOpaQuery
)
import
Gargantext.Database.Prelude
(
Cmd
M
,
mkCmd
,
runOpaQuery
)
import
Gargantext.Database.Query.Table.Node
(
getNodesIdWithType
,
nodeExists
)
import
Gargantext.Database.Query.Table.Node.Error
(
HasNodeError
)
import
Gargantext.Prelude
...
...
@@ -45,7 +45,7 @@ nodeStoryTable =
nodeStorySelect
::
Select
NodeStoryRead
nodeStorySelect
=
selectTable
nodeStoryTable
getNodeStory
::
NodeId
->
Cmd
err
NodeListStory
getNodeStory
::
CmdM
env
err
m
=>
NodeId
->
m
NodeListStory
getNodeStory
(
NodeId
nodeId
)
=
do
res
<-
runOpaQuery
query
pure
$
NodeStory
$
Map
.
fromListWith
(
<>
)
$
(
\
(
NodeStoryDB
nId
a
)
->
(
nId
,
a
))
<$>
res
...
...
@@ -56,7 +56,7 @@ getNodeStory (NodeId nodeId) = do
restrict
-<
node_id
.==
sqlInt4
nodeId
returnA
-<
row
insertNodeArchive
::
NodeId
->
ArchiveQ
->
Cmd
err
Int64
insertNodeArchive
::
CmdM
env
err
m
=>
NodeId
->
ArchiveQ
->
m
Int64
insertNodeArchive
(
NodeId
nId
)
a
=
mkCmd
$
\
c
->
runInsert
c
insert
where
insert
=
Insert
{
iTable
=
nodeStoryTable
...
...
@@ -65,7 +65,7 @@ insertNodeArchive (NodeId nId) a = mkCmd $ \c -> runInsert c insert
,
iReturning
=
rCount
,
iOnConflict
=
Nothing
}
updateNodeArchive
::
NodeId
->
ArchiveQ
->
Cmd
err
Int64
updateNodeArchive
::
CmdM
env
err
m
=>
NodeId
->
ArchiveQ
->
m
Int64
updateNodeArchive
(
NodeId
nId
)
a
=
mkCmd
$
\
c
->
runUpdate
c
update
where
update
=
Update
{
uTable
=
nodeStoryTable
...
...
@@ -73,27 +73,27 @@ updateNodeArchive (NodeId nId) a = mkCmd $ \c -> runUpdate c update
,
uWhere
=
(
\
row
->
node_id
row
.==
sqlInt4
nId
)
,
uReturning
=
rCount
}
nodeStoryRemove
::
NodeId
->
Cmd
err
Int64
nodeStoryRemove
::
CmdM
env
err
m
=>
NodeId
->
m
Int64
nodeStoryRemove
(
NodeId
nId
)
=
mkCmd
$
\
c
->
runDelete
c
delete
where
delete
=
Delete
{
dTable
=
nodeStoryTable
,
dWhere
=
(
\
row
->
node_id
row
.==
sqlInt4
nId
)
,
dReturning
=
rCount
}
upsertNodeArchive
::
NodeId
->
ArchiveQ
->
Cmd
err
Int64
upsertNodeArchive
::
CmdM
env
err
m
=>
NodeId
->
ArchiveQ
->
m
Int64
upsertNodeArchive
nId
a
=
do
(
NodeStory
m
)
<-
getNodeStory
nId
case
Map
.
lookup
nId
m
of
Nothing
->
insertNodeArchive
nId
a
Just
_
->
updateNodeArchive
nId
a
writeNodeStories
::
NodeListStory
->
Cmd
err
()
writeNodeStories
::
CmdM
env
err
m
=>
NodeListStory
->
m
()
writeNodeStories
(
NodeStory
nls
)
=
do
_
<-
mapM
(
\
(
nId
,
a
)
->
upsertNodeArchive
nId
a
)
$
Map
.
toList
nls
pure
()
-- | Returns a `NodeListStory`, updating the given one for given `NodeId`
nodeStoryInc
::
Maybe
NodeListStory
->
NodeId
->
Cmd
err
NodeListStory
nodeStoryInc
::
CmdM
env
err
m
=>
Maybe
NodeListStory
->
NodeId
->
m
NodeListStory
nodeStoryInc
Nothing
nId
=
getNodeStory
nId
nodeStoryInc
(
Just
ns
@
(
NodeStory
nls
))
nId
=
do
case
Map
.
lookup
nId
nls
of
...
...
@@ -102,14 +102,14 @@ nodeStoryInc (Just ns@(NodeStory nls)) nId = do
pure
$
NodeStory
$
Map
.
union
nls
nls'
Just
_
->
pure
ns
nodeStoryIncs
::
Maybe
NodeListStory
->
[
NodeId
]
->
Cmd
err
NodeListStory
nodeStoryIncs
::
CmdM
env
err
m
=>
Maybe
NodeListStory
->
[
NodeId
]
->
m
NodeListStory
nodeStoryIncs
Nothing
[]
=
pure
$
NodeStory
$
Map
.
empty
nodeStoryIncs
(
Just
nls
)
ns
=
foldM
(
\
m
n
->
nodeStoryInc
(
Just
m
)
n
)
nls
ns
nodeStoryIncs
Nothing
(
ni
:
ns
)
=
do
m
<-
getNodeStory
ni
nodeStoryIncs
(
Just
m
)
ns
nodeStoryDec
::
NodeListStory
->
NodeId
->
Cmd
err
NodeListStory
nodeStoryDec
::
CmdM
env
err
m
=>
NodeListStory
->
NodeId
->
m
NodeListStory
nodeStoryDec
ns
@
(
NodeStory
nls
)
ni
=
do
case
Map
.
lookup
ni
nls
of
Nothing
->
do
...
...
@@ -136,17 +136,17 @@ migrateFromDir = do
------------------------------------
data
NodeStoryEnv
e
rr
=
NodeStoryEnv
data
NodeStoryEnv
e
nv
err
m
=
NodeStoryEnv
{
_nse_var
::
!
(
MVar
NodeListStory
)
,
_nse_saver
::
!
(
Cmd
err
()
)
,
_nse_getter
::
[
NodeId
]
->
Cmd
err
(
MVar
NodeListStory
)
,
_nse_saver
::
!
(
m
()
)
,
_nse_getter
::
[
NodeId
]
->
m
(
MVar
NodeListStory
)
--, _nse_cleaner :: !(IO ()) -- every 12 hours: cleans the repos of unused NodeStories
-- , _nse_lock :: !FileLock -- TODO (it depends on the option: if with database or file only)
}
--deriving (Generic)
nodeStoryEnv
::
Cmd
err
(
NodeStoryEnv
err
)
nodeStoryEnv
::
Cmd
M
env
err
m
=>
m
(
NodeStoryEnv
env
err
m
)
nodeStoryEnv
=
do
mvar
<-
nodeStoryVar
Nothing
[]
--saver <- mkNodeStorySaver mvar
...
...
@@ -158,7 +158,7 @@ nodeStoryEnv = do
,
_nse_saver
=
saver
,
_nse_getter
=
nodeStoryVar
(
Just
mvar
)
}
nodeStoryVar
::
Maybe
(
MVar
NodeListStory
)
->
[
NodeId
]
->
Cmd
err
(
MVar
NodeListStory
)
nodeStoryVar
::
CmdM
env
err
m
=>
Maybe
(
MVar
NodeListStory
)
->
[
NodeId
]
->
m
(
MVar
NodeListStory
)
nodeStoryVar
Nothing
nIds
=
do
state
<-
nodeStoryIncs
Nothing
nIds
newMVar
state
...
...
@@ -169,7 +169,7 @@ nodeStoryVar (Just mv) nIds = do
-- TODO No debounce since this is IO stuff.
-- debounce is useful since it could delay the saving to some later
-- time, asynchronously and we keep operating on memory only.
mkNodeStorySaver
::
MVar
NodeListStory
->
Cmd
err
()
mkNodeStorySaver
::
CmdM
env
err
m
=>
MVar
NodeListStory
->
m
()
mkNodeStorySaver
mvns
=
withMVar
mvns
writeNodeStories
-- mkNodeStorySaver :: MVar NodeListStory -> Cmd err (Cmd err ())
...
...
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