2 Module : Gargantext.API.Node.Update
4 Copyright : (c) CNRS, 2017-Present
5 License : AGPL + CECILL v3
6 Maintainer : team@gargantext.org
7 Stability : experimental
12 {-# LANGUAGE TemplateHaskell #-}
13 {-# LANGUAGE TypeOperators #-}
14 {-# OPTIONS_GHC -fno-warn-orphans #-}
16 module Gargantext.API.Node.Update
19 import Prelude (Enum, Bounded, minBound, maxBound)
22 import GHC.Generics (Generic)
23 import Gargantext.Database.Admin.Types.Node
24 import Gargantext.Database.Prelude
25 import Gargantext.Database.Query.Table.Node.Error (HasNodeError(..))
26 import Gargantext.Prelude
28 import Test.QuickCheck (elements)
29 import Test.QuickCheck.Arbitrary
31 ------------------------------------------------------------------------
32 data UpdateNodeParams = UpdateNodeParamsList { methodList :: Method }
33 | UpdateNodeParamsGraph { methodGraph :: GraphMetric }
34 | UpdateNodeParamsTexts { methodTexts :: Granularity }
35 | UpdateNodeParamsBoard { methodBoard :: Charts }
38 ----------------------------------------------------------------------
39 data Method = Basic | Advanced | WithModel
40 deriving (Generic, Eq, Ord, Enum, Bounded)
42 ----------------------------------------------------------------------
43 data GraphMetric = Order1 | Order2
44 deriving (Generic, Eq, Ord, Enum, Bounded)
46 ----------------------------------------------------------------------
47 data Granularity = NewNgrams | NewTexts | Both
48 deriving (Generic, Eq, Ord, Enum, Bounded)
50 ----------------------------------------------------------------------
51 data Charts = Sources | Authors | Institutes | Ngrams | All
52 deriving (Generic, Eq, Ord, Enum, Bounded)
54 ------------------------------------------------------------------------
55 -- TODO unPrefix "pn_" FromJSON, ToJSON, ToSchema, adapt frontend.
56 instance FromJSON UpdateNodeParams
57 instance ToJSON UpdateNodeParams
58 instance ToSchema UpdateNodeParams
59 instance Arbitrary UpdateNodeParams where
61 l <- UpdateNodeParamsList <$> arbitrary
62 g <- UpdateNodeParamsGraph <$> arbitrary
63 t <- UpdateNodeParamsTexts <$> arbitrary
64 b <- UpdateNodeParamsBoard <$> arbitrary
67 instance FromJSON Method
68 instance ToJSON Method
69 instance ToSchema Method
70 instance Arbitrary Method where
71 arbitrary = elements [ minBound .. maxBound ]
73 instance FromJSON GraphMetric
74 instance ToJSON GraphMetric
75 instance ToSchema GraphMetric
76 instance Arbitrary GraphMetric where
77 arbitrary = elements [ minBound .. maxBound ]
79 instance FromJSON Granularity
80 instance ToJSON Granularity
81 instance ToSchema Granularity
82 instance Arbitrary Granularity where
83 arbitrary = elements [ minBound .. maxBound ]
85 instance FromJSON Charts
86 instance ToJSON Charts
87 instance ToSchema Charts
88 instance Arbitrary Charts where
89 arbitrary = elements [ minBound .. maxBound ]
91 ------------------------------------------------------------------------
92 api :: HasNodeError err
96 api _nId (UpdateNodeParamsList _meth) = pure 1
97 api _nId (UpdateNodeParamsGraph _meth) = pure 1
98 api _nId (UpdateNodeParamsTexts _meth) = pure 1
99 api _nId (UpdateNodeParamsBoard _meth) = pure 1
101 ------------------------------------------------------------------------
102 type API = Summary " Share Node with username"
103 :> ReqBody '[JSON] UpdateNodeParams