{-# LANGUAGE TypeOperators #-} module Gargantext.API.Routes.Named.Metrics ( -- * Routes types TreeAPI(..) , ScatterAPI(..) , ChartAPI(..) , PieAPI(..) ) where import Data.Text (Text) import Data.Time (UTCTime) import Data.Vector (Vector) import GHC.Generics (Generic) import Gargantext.API.HashedResponse (HashedResponse) import Gargantext.API.Ngrams.NgramsTree (NgramsTree) import Gargantext.API.Ngrams.Types (QueryParamR, TabType) import Gargantext.Core.Types.Main (ListType) import Gargantext.Core.Types.Query (Limit) import Gargantext.Core.Viz.Types (Histo) import Gargantext.Database.Admin.Types.Metrics (ChartMetrics, Metrics) import Gargantext.Database.Admin.Types.Node (ListId) import Servant data TreeAPI mode = TreeAPI { treeChartEp :: mode :- Summary " Tree API" :> QueryParam "from" UTCTime :> QueryParam "to" UTCTime :> QueryParam "list" ListId :> QueryParamR "ngramsType" TabType :> QueryParamR "listType" ListType :> Get '[JSON] (HashedResponse (ChartMetrics (Vector NgramsTree))) , treeChartUpdateEp :: mode :- Summary "Tree Chart update" :> QueryParam "list" ListId :> QueryParamR "ngramsType" TabType :> QueryParamR "listType" ListType :> Post '[JSON] () , treeHashEp :: mode :- "hash" :> Summary "Tree Hash" :> QueryParam "list" ListId :> QueryParamR "ngramsType" TabType :> QueryParamR "listType" ListType :> Get '[JSON] Text } deriving Generic data ScatterAPI mode = ScatterAPI { sepGenEp :: mode :- Summary "SepGen IncExc metrics" :> QueryParam "list" ListId :> QueryParamR "ngramsType" TabType :> QueryParam "limit" Limit :> Get '[JSON] (HashedResponse Metrics) , scatterUpdateEp :: mode :- Summary "Scatter update" :> QueryParam "list" ListId :> QueryParamR "ngramsType" TabType :> QueryParam "limit" Limit :> Post '[JSON] () , scatterHashEp :: mode :- "hash" :> Summary "Scatter Hash" :> QueryParam "list" ListId :> QueryParamR "ngramsType" TabType :> Get '[JSON] Text } deriving Generic data PieAPI mode = PieAPI { getPieChartEp :: mode :- Summary "Pie Chart" :> QueryParam "from" UTCTime :> QueryParam "to" UTCTime :> QueryParam "list" ListId :> QueryParamR "ngramsType" TabType :> Get '[JSON] (HashedResponse (ChartMetrics Histo)) , pieChartUpdateEp :: mode :- Summary "Pie Chart update" :> QueryParam "list" ListId :> QueryParamR "ngramsType" TabType :> QueryParam "limit" Limit :> Post '[JSON] () , pieHashEp :: mode :- "hash" :> Summary "Pie Hash" :> QueryParam "list" ListId :> QueryParamR "ngramsType" TabType :> Get '[JSON] Text } deriving Generic data ChartAPI mode = ChartAPI { getChartEp :: mode :- Summary " Chart API" :> QueryParam "from" UTCTime :> QueryParam "to" UTCTime :> QueryParam "list" ListId :> QueryParamR "ngramsType" TabType :> Get '[JSON] (HashedResponse (ChartMetrics Histo)) , updateChartEp :: mode :- Summary "Chart update" :> QueryParam "list" ListId :> QueryParamR "ngramsType" TabType :> QueryParam "limit" Limit :> Post '[JSON] () , chartHashEp :: mode :- "hash" :> Summary "Chart Hash" :> QueryParam "list" ListId :> QueryParamR "ngramsType" TabType :> Get '[JSON] Text } deriving Generic