module Gargantext.API.Node.Update
where
+import Control.Lens (view)
import Data.Aeson
import Data.Maybe (Maybe(..))
import Data.Swagger
import GHC.Generics (Generic)
-import Prelude (Enum, Bounded, minBound, maxBound)
-import Servant
-import Servant.Job.Async (JobFunction(..), serveJobsAPI)
-import Test.QuickCheck (elements)
-import Test.QuickCheck.Arbitrary
-
import Gargantext.API.Admin.Orchestrator.Types (JobLog(..), AsyncJobs)
import Gargantext.API.Admin.Types (HasSettings)
+import qualified Gargantext.API.Metrics as Metrics
+import Gargantext.API.Ngrams.List (reIndexWith)
+import qualified Gargantext.API.Ngrams.Types as NgramsTypes
import Gargantext.API.Prelude (GargServer, simuLogs)
+import Gargantext.Core.Methods.Distances (GraphMetric(..))
+import Gargantext.Core.Types.Main (ListType(..))
import Gargantext.Core.Viz.Graph.API (recomputeGraph)
-import Gargantext.Core.Viz.Graph.Distances (GraphMetric(..), Distance(..))
import Gargantext.Database.Action.Flow.Pairing (pairing)
import Gargantext.Database.Action.Flow.Types (FlowCmdM)
import Gargantext.Database.Admin.Types.Node
+import Gargantext.Database.Query.Table.Node (getNode)
+import Gargantext.Database.Schema.Node (node_parent_id)
+import Gargantext.Database.Schema.Ngrams (NgramsType(NgramsTerms))
import Gargantext.Prelude (Ord, Eq, (<$>), ($), liftBase, (.), printDebug, pure, show, cs, (<>), panic)
+import qualified Gargantext.Utils.Aeson as GUA
+import Prelude (Enum, Bounded, minBound, maxBound)
+import Servant
+import Servant.Job.Async (JobFunction(..), serveJobsAPI)
+import Test.QuickCheck (elements)
+import Test.QuickCheck.Arbitrary
+import qualified Data.Set as Set
------------------------------------------------------------------------
type API = Summary " Update node according to NodeType params"
, _scst_events = Just []
}
- _ <- case metric of
- Order1 -> recomputeGraph uId nId Conditional
- Order2 -> recomputeGraph uId nId Distributional
+ _ <- recomputeGraph uId nId (Just metric)
pure JobLog { _scst_succeeded = Just 2
, _scst_failed = Just 0
, _scst_events = Just []
}
+-- | `Advanced` to update graphs
+updateNode _uId lId (UpdateNodeParamsList Advanced) logStatus = do
+ logStatus JobLog { _scst_succeeded = Just 1
+ , _scst_failed = Just 0
+ , _scst_remaining = Just 2
+ , _scst_events = Just []
+ }
+ corpusId <- view node_parent_id <$> getNode lId
+
+ logStatus JobLog { _scst_succeeded = Just 2
+ , _scst_failed = Just 0
+ , _scst_remaining = Just 1
+ , _scst_events = Just []
+ }
+
+ _ <- case corpusId of
+ Just cId -> do
+ _ <- Metrics.updatePie' cId (Just lId) NgramsTypes.Authors Nothing
+ _ <- Metrics.updateTree' cId (Just lId) NgramsTypes.Institutes MapTerm
+ _ <- Metrics.updatePie' cId (Just lId) NgramsTypes.Sources Nothing
+ pure ()
+ Nothing -> pure ()
+
+ pure JobLog { _scst_succeeded = Just 3
+ , _scst_failed = Just 0
+ , _scst_remaining = Just 0
+ , _scst_events = Just []
+ }
+
+updateNode _uId lId (UpdateNodeParamsList _mode) logStatus = do
+ logStatus JobLog { _scst_succeeded = Just 1
+ , _scst_failed = Just 0
+ , _scst_remaining = Just 2
+ , _scst_events = Just []
+ }
+ corpusId <- view node_parent_id <$> getNode lId
+
+ logStatus JobLog { _scst_succeeded = Just 2
+ , _scst_failed = Just 0
+ , _scst_remaining = Just 1
+ , _scst_events = Just []
+ }
+
+ _ <- case corpusId of
+ Just cId -> reIndexWith cId lId NgramsTerms (Set.singleton MapTerm)
+ Nothing -> pure ()
+
+ pure JobLog { _scst_succeeded = Just 3
+ , _scst_failed = Just 0
+ , _scst_remaining = Just 0
+ , _scst_events = Just []
+ }
+
updateNode _uId _nId _p logStatus = do
simuLogs logStatus 10
------------------------------------------------------------------------
-- TODO unPrefix "pn_" FromJSON, ToJSON, ToSchema, adapt frontend.
instance FromJSON UpdateNodeParams where
- parseJSON = genericParseJSON (defaultOptions { sumEncoding = ObjectWithSingleField })
+ parseJSON = genericParseJSON (defaultOptions { sumEncoding = GUA.defaultTaggedObject })
instance ToJSON UpdateNodeParams where
- toJSON = genericToJSON (defaultOptions { sumEncoding = ObjectWithSingleField })
+ toJSON = genericToJSON (defaultOptions { sumEncoding = GUA.defaultTaggedObject })
instance ToSchema UpdateNodeParams
instance Arbitrary UpdateNodeParams where