where
import Data.Aeson
+import Data.Maybe (Maybe(..))
import Data.Swagger
import GHC.Generics (Generic)
-import Data.Maybe (Maybe(..))
-import Gargantext.API.Admin.Settings (HasSettings)
-import Gargantext.API.Admin.Orchestrator.Types (JobLog(..))
-import Gargantext.API.Node.Corpus.New (AsyncJobs)
-import Gargantext.API.Prelude (GargServer, simuLogs)
-import Gargantext.Viz.Graph.Distances (GraphMetric(..), Distance(..))
-import Gargantext.Viz.Graph.API (recomputeGraph)
-import Gargantext.Database.Action.Flow.Types (FlowCmdM)
-import Gargantext.Database.Admin.Types.Node
-import Gargantext.Prelude (Ord, Eq, (<$>), ($), liftBase, (.), printDebug, pure)
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 Gargantext.API.Prelude (GargServer, simuLogs)
+import Gargantext.Core.Viz.Graph.API (recomputeGraph)
+import Gargantext.Core.Methods.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.Prelude (Ord, Eq, (<$>), ($), liftBase, (.), printDebug, pure, show, cs, (<>), panic)
------------------------------------------------------------------------
type API = Summary " Update node according to NodeType params"
:> AsyncJobs JobLog '[JSON] UpdateNodeParams JobLog
------------------------------------------------------------------------
-data UpdateNodeParams = UpdateNodeParamsList { methodList :: Method }
- | UpdateNodeParamsGraph { methodGraph :: GraphMetric }
- | UpdateNodeParamsTexts { methodTexts :: Granularity }
- | UpdateNodeParamsBoard { methodBoard :: Charts }
+data UpdateNodeParams = UpdateNodeParamsList { methodList :: !Method }
+ | UpdateNodeParamsGraph { methodGraph :: !GraphMetric }
+ | UpdateNodeParamsTexts { methodTexts :: !Granularity }
+ | UpdateNodeParamsBoard { methodBoard :: !Charts }
+ | LinkNodeReq { nodeType :: !NodeType, id :: !NodeId }
deriving (Generic)
----------------------------------------------------------------------
api :: UserId -> NodeId -> GargServer API
api uId nId =
serveJobsAPI $
- JobFunction (\p log ->
+ JobFunction (\p log'' ->
let
log' x = do
printDebug "updateNode" x
- liftBase $ log x
+ liftBase $ log'' x
in updateNode uId nId p (liftBase . log')
)
logStatus JobLog { _scst_succeeded = Just 1
, _scst_failed = Just 0
- , _scst_remaining = Just 2
+ , _scst_remaining = Just 1
, _scst_events = Just []
}
, _scst_events = Just []
}
+updateNode _uId nid1 (LinkNodeReq nt nid2) logStatus = do
+ logStatus JobLog { _scst_succeeded = Just 1
+ , _scst_failed = Just 0
+ , _scst_remaining = Just 1
+ , _scst_events = Just []
+ }
+ _ <- case nt of
+ NodeAnnuaire -> pairing nid2 nid1 Nothing -- defaultList
+ NodeCorpus -> pairing nid1 nid2 Nothing -- defaultList
+ _ -> panic $ "[G.API.N.Update.updateNode] NodeType not implemented"
+ <> cs (show nt)
+
+ pure JobLog { _scst_succeeded = Just 2
+ , _scst_failed = Just 0
+ , _scst_remaining = Just 0
+ , _scst_events = Just []
+ }
+
updateNode _uId _nId _p logStatus = do
simuLogs logStatus 10