diff --git a/src/Gargantext/API/Ngrams/Types.hs b/src/Gargantext/API/Ngrams/Types.hs index 2a361a8556cc86f3fe05168147be3e1e513fd155..1f5237ba0a3557eb7fd9ce68a59e37071afb3cac 100644 --- a/src/Gargantext/API/Ngrams/Types.hs +++ b/src/Gargantext/API/Ngrams/Types.hs @@ -53,6 +53,7 @@ import qualified Gargantext.Database.Query.Table.Ngrams as TableNgrams ------------------------------------------------------------------------ +type QueryParamR = QueryParam' '[Required, Strict] ------------------------------------------------------------------------ --data FacetFormat = Table | Chart @@ -251,16 +252,16 @@ toNgramsElement ns = map toNgramsElement' ns mockTable :: NgramsTable mockTable = NgramsTable - [ mkNgramsElement "animal" MapTerm Nothing (mSetFromList ["dog", "cat"]) - , mkNgramsElement "cat" MapTerm (rp "animal") mempty + [ mkNgramsElement "animal" MapTerm Nothing (mSetFromList ["dog", "cat"]) + , mkNgramsElement "cat" MapTerm (rp "animal") mempty , mkNgramsElement "cats" StopTerm Nothing mempty - , mkNgramsElement "dog" MapTerm (rp "animal") (mSetFromList ["dogs"]) + , mkNgramsElement "dog" MapTerm (rp "animal") (mSetFromList ["dogs"]) , mkNgramsElement "dogs" StopTerm (rp "dog") mempty - , mkNgramsElement "fox" MapTerm Nothing mempty + , mkNgramsElement "fox" MapTerm Nothing mempty , mkNgramsElement "object" CandidateTerm Nothing mempty , mkNgramsElement "nothing" StopTerm Nothing mempty - , mkNgramsElement "organic" MapTerm Nothing (mSetFromList ["flower"]) - , mkNgramsElement "flower" MapTerm (rp "organic") mempty + , mkNgramsElement "organic" MapTerm Nothing (mSetFromList ["flower"]) + , mkNgramsElement "flower" MapTerm (rp "organic") mempty , mkNgramsElement "moon" CandidateTerm Nothing mempty , mkNgramsElement "sky" StopTerm Nothing mempty ] @@ -711,6 +712,8 @@ initMockRepo = Repo 1 s [] $ Map.fromList [ (n ^. ne_ngrams, ngramsElementToRepo n) | n <- mockTable ^. _NgramsTable ] +-------------------- + data RepoEnv = RepoEnv { _renv_var :: !(MVar NgramsRepo) , _renv_saver :: !(IO ()) @@ -750,8 +753,7 @@ type RepoCmdM env err m = , HasConfig env ) - -type QueryParamR = QueryParam' '[Required, Strict] +------------------------------------------------------------------------ -- Instances diff --git a/src/Gargantext/Core/NodeStory.hs b/src/Gargantext/Core/NodeStory.hs index 77e6762bb7138539d878f0cd5c13013b8baa4a02..8810b48e40a3d2f73d9b16896639625bfac554d7 100644 --- a/src/Gargantext/Core/NodeStory.hs +++ b/src/Gargantext/Core/NodeStory.hs @@ -12,19 +12,22 @@ Portability : POSIX module Gargantext.Core.NodeStory where + +import Codec.Serialise (Serialise()) +import Control.Lens (makeLenses, makePrisms, Getter, Iso', iso, from, (.~), (?=), (#), to, folded, {-withIndex, ifolded,-} view, use, (^.), (^?), (%~), (.~), (%=), at, _Just, Each(..), itraverse_, both, forOf_, (?~)) +import Data.Aeson hiding ((.=)) import Data.IntMap (IntMap) -import qualified Data.IntMap as Dict +import Data.IntMap as Bibliotheque import Data.Map (Map) import Data.Map as Map +import Data.Monoid +import GHC.Generics (Generic) import Gargantext.API.Ngrams.Types import Gargantext.Core.Types (ListType(..), ListId, NodeId) -import Data.IntMap as Bibliotheque -import qualified Gargantext.Database.Query.Table.Ngrams as TableNgrams -import Gargantext.Prelude -import GHC.Generics (Generic) -import Data.Aeson hiding ((.=)) import Gargantext.Core.Utils.Prefix (unPrefix, unPrefixUntagged, unPrefixSwagger, wellNamedSchema) - +import Gargantext.Prelude +import qualified Data.IntMap as Dict +import qualified Gargantext.Database.Query.Table.Ngrams as TableNgrams -- TODO : repo Migration repoMigration :: (s -> s') -> (p -> p') -> Repo s p -> NodeStory s' p' @@ -36,6 +39,8 @@ data NodeStory s p = NodeStory { unNodeStory :: Map NodeId (Archive s p) } deriving (Generic, Show) instance (FromJSON s, FromJSON p) => FromJSON (NodeStory s p) +instance (ToJSON s, ToJSON p) => ToJSON (NodeStory s p) +instance (Serialise s, Serialise p) => Serialise (NodeStory s p) data Archive s p = Archive { _a_version :: !Version @@ -45,9 +50,12 @@ data Archive s p = Archive } deriving (Generic, Show) +instance (Serialise s, Serialise p) => Serialise (Archive s p) + -- TODO Semigroup instance for unions type NodeListStory = NodeStory NgramsState' NgramsStatePatch' + type NgramsState' = Map TableNgrams.NgramsType NgramsTableMap type NgramsStatePatch' = PatchMap TableNgrams.NgramsType NgramsTablePatch @@ -57,3 +65,28 @@ instance (FromJSON s, FromJSON p) => FromJSON (Archive s p) where instance (ToJSON s, ToJSON p) => ToJSON (Archive s p) where toJSON = genericToJSON $ unPrefix "_a_" toEncoding = genericToEncoding $ unPrefix "_a_" + +------------------------------------------------------------------------ +initNodeStory :: Monoid s => NodeStory s p +initNodeStory = NodeStory $ Map.singleton 1 initArchive + +initArchive :: Monoid s => Archive s p +initArchive = Archive 1 mempty [] + +initNodeListStoryMock :: NodeListStory +initNodeListStoryMock = NodeStory $ Map.singleton nodeListId archive + where + nodeListId = 10 + archive = Archive 1 ngramsTableMap [] + ngramsTableMap = Map.singleton TableNgrams.NgramsTerms + $ Map.fromList + [ (n ^. ne_ngrams, ngramsElementToRepo n) + | n <- mockTable ^. _NgramsTable + ] + +------------------------------------------------------------------------ +{- +data NodeStoryEnv = NodeStoryEnv + { _nse_var :: !(MVar +-} +