Commit 44a2d2ad authored by Przemyslaw Kaminski's avatar Przemyslaw Kaminski

[ngrams] fix version bumpup after new term added

parent 42b94fad
...@@ -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,23 +898,25 @@ putListNgrams :: RepoCmdM env err m ...@@ -893,23 +898,25 @@ putListNgrams :: RepoCmdM env err m
-> TableNgrams.NgramsType -> TableNgrams.NgramsType
-> [NgramsElement] -> m () -> [NgramsElement] -> m ()
putListNgrams _ _ [] = pure () putListNgrams _ _ [] = pure ()
putListNgrams listId ngramsType nes = putListNgrams' listId ngramsType m putListNgrams nodeId ngramsType nes = putListNgrams' nodeId 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
=> ListId => NodeId
-> 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
...@@ -917,7 +924,6 @@ putListNgrams' listId ngramsType ns = do ...@@ -917,7 +924,6 @@ putListNgrams' listId ngramsType ns = do
) )
. 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 listId mayList = tableNgramsPost tabType nodeId mayList =
putListNgrams listId (ngramsTypeFromTabType tabType) . fmap (newNgramsElement mayList) putListNgrams nodeId (ngramsTypeFromTabType tabType) . fmap (newNgramsElement mayList)
currentVersion :: RepoCmdM env err m currentVersion :: RepoCmdM env err m
=> m Version => m Version
...@@ -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
=> ListId => NodeId
-> 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
......
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