Commit a243b95f authored by Przemyslaw Kaminski's avatar Przemyslaw Kaminski

[nodeStory] add version to node_story_archive_history

This is so that we correctly order _a_history later.
parent a7be6271
Pipeline #3152 passed with stage
in 91 minutes and 46 seconds
...@@ -244,6 +244,7 @@ create table public.node_story_archive_history ( ...@@ -244,6 +244,7 @@ create table public.node_story_archive_history (
ngrams_type_id INTEGER NOT NULL, ngrams_type_id INTEGER NOT NULL,
ngrams_id INTEGER NOT NULL, ngrams_id INTEGER NOT NULL,
patch jsonb DEFAULT '{}'::jsonb NOT NULL, patch jsonb DEFAULT '{}'::jsonb NOT NULL,
version INTEGER NOT NULL DEFAULT 0,
PRIMARY KEY (id), PRIMARY KEY (id),
FOREIGN KEY (node_id) REFERENCES public.nodes(id) ON DELETE CASCADE, FOREIGN KEY (node_id) REFERENCES public.nodes(id) ON DELETE CASCADE,
FOREIGN KEY (ngrams_id) REFERENCES public.ngrams(id) ON DELETE CASCADE FOREIGN KEY (ngrams_id) REFERENCES public.ngrams(id) ON DELETE CASCADE
......
ALTER TABLE node_story_archive_history
ADD COLUMN version INTEGER NOT NULL DEFAULT 0;
...@@ -5,7 +5,7 @@ cabal-version: 1.12 ...@@ -5,7 +5,7 @@ cabal-version: 1.12
-- see: https://github.com/sol/hpack -- see: https://github.com/sol/hpack
name: gargantext name: gargantext
version: 0.0.6 version: 0.0.6.1
synopsis: Search, map, share synopsis: Search, map, share
description: Please see README.md description: Please see README.md
category: Data category: Data
...@@ -51,6 +51,7 @@ library ...@@ -51,6 +51,7 @@ library
Gargantext.Core.Types.Individu Gargantext.Core.Types.Individu
Gargantext.Core.Types.Main Gargantext.Core.Types.Main
Gargantext.Core.Utils.Prefix Gargantext.Core.Utils.Prefix
Gargantext.Utils.SpacyNLP
Gargantext.Database.Action.Flow Gargantext.Database.Action.Flow
Gargantext.Database.Action.Flow.Types Gargantext.Database.Action.Flow.Types
Gargantext.Database.Action.User.New Gargantext.Database.Action.User.New
...@@ -76,6 +77,7 @@ library ...@@ -76,6 +77,7 @@ library
Gargantext.Core.Text.Metrics.TFICF Gargantext.Core.Text.Metrics.TFICF
Gargantext.Core.Text.Metrics.CharByChar Gargantext.Core.Text.Metrics.CharByChar
Gargantext.Core.Text.Metrics.Count Gargantext.Core.Text.Metrics.Count
Gargantext.Core.Text.Prepare
Gargantext.Core.Text.Search Gargantext.Core.Text.Search
Gargantext.Core.Text.Terms Gargantext.Core.Text.Terms
Gargantext.Core.Text.Terms.Mono Gargantext.Core.Text.Terms.Mono
...@@ -316,7 +318,6 @@ library ...@@ -316,7 +318,6 @@ library
Gargantext.Database.Types Gargantext.Database.Types
Gargantext.Utils.Aeson Gargantext.Utils.Aeson
Gargantext.Utils.JohnSnowNLP Gargantext.Utils.JohnSnowNLP
Gargantext.Utils.SpacyNLP
Gargantext.Utils.Servant Gargantext.Utils.Servant
Gargantext.Utils.UTCTime Gargantext.Utils.UTCTime
Paths_gargantext Paths_gargantext
...@@ -491,9 +492,9 @@ library ...@@ -491,9 +492,9 @@ library
, transformers-base , transformers-base
, tuple , tuple
, unordered-containers , unordered-containers
, uri-encode
, utf8-string , utf8-string
, uuid , uuid
, uri-encode
, validity , validity
, vector , vector
, wai , wai
......
...@@ -346,7 +346,7 @@ getNodesIdWithType c nt = do ...@@ -346,7 +346,7 @@ getNodesIdWithType c nt = do
-- nodeStorySelect :: Select NodeStoryRead -- nodeStorySelect :: Select NodeStoryRead
-- nodeStorySelect = selectTable nodeStoryTable -- nodeStorySelect = selectTable nodeStoryTable
-- TODO Check ordering, "first patch in the _a_history list is the most recent" -- NOTE "first patch in the _a_history list is the most recent"
getNodeArchiveHistory :: PGS.Connection -> NodeId -> IO [NgramsStatePatch'] getNodeArchiveHistory :: PGS.Connection -> NodeId -> IO [NgramsStatePatch']
getNodeArchiveHistory c nodeId = do getNodeArchiveHistory c nodeId = do
as <- runPGSQuery c query (PGS.Only nodeId) :: IO [(TableNgrams.NgramsType, NgramsTerm, NgramsPatch)] as <- runPGSQuery c query (PGS.Only nodeId) :: IO [(TableNgrams.NgramsType, NgramsTerm, NgramsPatch)]
...@@ -356,15 +356,16 @@ getNodeArchiveHistory c nodeId = do ...@@ -356,15 +356,16 @@ getNodeArchiveHistory c nodeId = do
query = [sql| SELECT ngrams_type_id, terms, patch query = [sql| SELECT ngrams_type_id, terms, patch
FROM node_story_archive_history FROM node_story_archive_history
JOIN ngrams ON ngrams.id = ngrams_id JOIN ngrams ON ngrams.id = ngrams_id
WHERE node_id = ? |] WHERE node_id = ?
ORDER BY version DESC |]
ngramsIdQuery :: PGS.Query ngramsIdQuery :: PGS.Query
ngramsIdQuery = [sql| SELECT id FROM ngrams WHERE terms = ? |] ngramsIdQuery = [sql| SELECT id FROM ngrams WHERE terms = ? |]
insertNodeArchiveHistory :: PGS.Connection -> NodeId -> [NgramsStatePatch'] -> IO () insertNodeArchiveHistory :: PGS.Connection -> NodeId -> Version -> [NgramsStatePatch'] -> IO ()
insertNodeArchiveHistory _ _ [] = pure () insertNodeArchiveHistory _ _ _ [] = pure ()
insertNodeArchiveHistory c nodeId (h:hs) = do insertNodeArchiveHistory c nodeId version (h:hs) = do
let tuples = mconcat $ (\(nType, (NgramsTablePatch patch)) -> let tuples = mconcat $ (\(nType, (NgramsTablePatch patch)) ->
(\(term, p) -> (\(term, p) ->
(nodeId, nType, term, p)) <$> PM.toList patch) <$> PM.toList h :: [(NodeId, TableNgrams.NgramsType, NgramsTerm, NgramsPatch)] (nodeId, nType, term, p)) <$> PM.toList patch) <$> PM.toList h :: [(NodeId, TableNgrams.NgramsType, NgramsTerm, NgramsPatch)]
...@@ -372,13 +373,13 @@ insertNodeArchiveHistory c nodeId (h:hs) = do ...@@ -372,13 +373,13 @@ insertNodeArchiveHistory c nodeId (h:hs) = do
ngrams <- runPGSQuery c ngramsIdQuery (PGS.Only term) ngrams <- runPGSQuery c ngramsIdQuery (PGS.Only term)
pure $ (\(PGS.Only termId) -> (nId, nType, termId, term, patch)) <$> (headMay ngrams) pure $ (\(PGS.Only termId) -> (nId, nType, termId, term, patch)) <$> (headMay ngrams)
) tuples :: IO [Maybe (NodeId, TableNgrams.NgramsType, Int, NgramsTerm, NgramsPatch)] ) tuples :: IO [Maybe (NodeId, TableNgrams.NgramsType, Int, NgramsTerm, NgramsPatch)]
_ <- runPGSExecuteMany c query $ ((\(nId, nType, termId, _term, patch) -> (nId, nType, termId, patch)) <$> (catMaybes tuplesM)) _ <- runPGSExecuteMany c query $ ((\(nId, nType, termId, _term, patch) -> (nId, nType, termId, patch, version)) <$> (catMaybes tuplesM))
_ <- insertNodeArchiveHistory c nodeId hs _ <- insertNodeArchiveHistory c nodeId version hs
pure () pure ()
where where
query :: PGS.Query query :: PGS.Query
query = [sql| INSERT INTO node_story_archive_history(node_id, ngrams_type_id, ngrams_id, patch) VALUES (?, ?, ?, ?) |] query = [sql| INSERT INTO node_story_archive_history(node_id, ngrams_type_id, ngrams_id, patch, version) VALUES (?, ?, ?, ?, ?) |]
getNodeStory :: PGS.Connection -> NodeId -> IO NodeListStory getNodeStory :: PGS.Connection -> NodeId -> IO NodeListStory
getNodeStory c nId@(NodeId nodeId) = do getNodeStory c nId@(NodeId nodeId) = do
...@@ -540,7 +541,7 @@ upsertNodeStories c nodeId@(NodeId nId) newArchive = do ...@@ -540,7 +541,7 @@ upsertNodeStories c nodeId@(NodeId nId) newArchive = do
-- whether it's insert or update, we can insert node archive history already -- whether it's insert or update, we can insert node archive history already
-- NOTE: It is assumed that the most recent change is the first in the -- NOTE: It is assumed that the most recent change is the first in the
-- list, so we save these in reverse order -- list, so we save these in reverse order
insertNodeArchiveHistory c nodeId $ reverse $ newArchive ^. a_history insertNodeArchiveHistory c nodeId (newArchive ^. a_version) $ reverse $ newArchive ^. a_history
(NodeStory m) <- getNodeStory c nodeId (NodeStory m) <- getNodeStory c nodeId
case Map.lookup nodeId m of case Map.lookup nodeId m of
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment