Merge branch 'dev-phylo' of https://gitlab.iscpif.fr/gargantext/haskell-gargantext...
[gargantext.git] / src / Gargantext / API / Ngrams.hs
index c3f9b0b94930fc24c81dc0e7a5b1780d67c85c03..5e7a49a71fe04f3a46e56667be3ea0d5fbd7f34a 100644 (file)
@@ -34,20 +34,20 @@ add get
 module Gargantext.API.Ngrams
   where
 
---import Debug.Trace (trace)
+import Debug.Trace (trace)
 import Prelude (Enum, Bounded, Semigroup(..), minBound, maxBound {-, round-}, error)
 -- import Gargantext.Database.Schema.User  (UserId)
 import Data.Functor (($>))
 import Data.Patch.Class (Replace, replace, Action(act), Applicable(..),
                          Composable(..), Transformable(..),
                          PairPatch(..), Patched, ConflictResolution,
-                         ConflictResolutionReplace)
+                         ConflictResolutionReplace, ours)
 import qualified Data.Map.Strict.Patch as PM
 import Data.Monoid
 --import Data.Semigroup
 import Data.Set (Set)
 -- import qualified Data.List as List
--- import Data.Maybe (isJust)
+import Data.Maybe (catMaybes)
 -- import Data.Tuple.Extra (first)
 import qualified Data.Map.Strict as Map
 import Data.Map.Strict (Map)
@@ -70,8 +70,11 @@ import Data.Validity
 import GHC.Generics (Generic)
 import Gargantext.Core.Utils.Prefix (unPrefix)
 -- import Gargantext.Database.Schema.Ngrams (NgramsTypeId, ngramsTypeId, NgramsTableData(..))
+import Gargantext.Database.Config (userMaster)
 import Gargantext.Database.Schema.Ngrams (NgramsType)
-import Gargantext.Database.Utils (fromField')
+import Gargantext.Database.Utils (fromField', HasConnection)
+import Gargantext.Database.Lists (listsWith)
+import Gargantext.Database.Schema.Node (HasNodeError)
 import Database.PostgreSQL.Simple.FromField (FromField, fromField)
 import qualified Gargantext.Database.Schema.Ngrams as Ngrams
 -- import Gargantext.Database.Schema.NodeNgram hiding (Action)
@@ -630,13 +633,14 @@ ngramsStatePatchConflictResolution
   :: NgramsType -> NodeId -> NgramsTerm
   -> ConflictResolutionNgramsPatch
 ngramsStatePatchConflictResolution _ngramsType _nodeId _ngramsTerm
-  = (undefined {- TODO think this through -}, listTypeConflictResolution)
+  = (const ours, ours)
+  -- undefined {- TODO think this through -}, listTypeConflictResolution)
 
 class HasInvalidError e where
   _InvalidError :: Prism' e Validation
 
 instance HasInvalidError ServantErr where
-  _InvalidError = undefined {-prism' make match
+  _InvalidError = panic "error" {-prism' make match
     where
       err = err500 { errBody = "InvalidError" }
       make _ = err
@@ -743,7 +747,7 @@ getListNgrams nodeIds ngramsType = do
 -- | TODO Errors management
 --  TODO: polymorphic for Annuaire or Corpus or ...
 -- | Table of Ngrams is a ListNgrams formatted (sorted and/or cut).
-getTableNgrams :: RepoCmdM env err m
+getTableNgrams :: (RepoCmdM env err m, HasNodeError err, HasConnection env)
                => CorpusId -> Maybe TabType
                -> [ListId] -> Maybe Limit -> Maybe Offset
                -- -> Maybe MinSize -> Maybe MaxSize
@@ -757,7 +761,8 @@ getTableNgrams _cId maybeTabType listIds mlimit moffset = do
     defaultLimit = 10 -- TODO
     limit_  = maybe defaultLimit identity mlimit
     offset_ = maybe 0 identity moffset
-
-  getListNgrams ([104] <> listIds) ngramsType
+  
+  lists <- catMaybes <$> listsWith userMaster
+  trace (show lists) $ getListNgrams (lists <> listIds) ngramsType
     & mapped . v_data . _NgramsTable %~ (take limit_ . drop offset_)