NLP.hs 1.29 KB
Newer Older
1
{-# LANGUAGE DeriveAnyClass #-}
2
{-# LANGUAGE DerivingStrategies #-}
3 4 5 6

module Gargantext.API.GraphQL.NLP
  ( Lang(..)
  , LanguagesArgs(..)
7
  , LanguagesMap
8
  , LanguageTuple
9 10 11 12
  , resolveLanguages
  )
  where

13
import Control.Lens (view)
14 15
import Data.Morpheus.Types (GQLType)
import Gargantext.API.GraphQL.Types
16 17
import Gargantext.Core (Lang(..), NLPServerConfig(..), PosTagAlgo)  -- , allLangs)
import Gargantext.Core.NLP (HasNLPServer(..))
18
import Gargantext.Prelude
19
import Protolude
20
import qualified Data.Map.Strict as Map
21

22 23 24 25
newtype LanguagesArgs
  = LanguagesArgs ()
    deriving stock (Generic)
    deriving anyclass (GQLType)
26

27
type LanguagesMap = Map.Map Lang NLPServer
28 29 30 31 32
data LanguageTuple =
  LanguageTuple { lt_lang   :: Lang
                , lt_server :: NLPServer }
    deriving stock (Generic)
    deriving anyclass (GQLType)
33 34 35 36 37 38 39 40

data NLPServer = NLPServer
  {
    server :: !PosTagAlgo
  , url    :: !Text
  }
  deriving (Show, Eq, Generic, GQLType)

41
resolveLanguages
42 43
  :: HasNLPServer env => GqlM e env [LanguageTuple]
resolveLanguages = do
44 45 46
  lift $ do
    ns <- view nlpServer
    printDebug "[resolveLanguages] nlpServer" ns
47 48 49
    pure $ [LanguageTuple { lt_lang = lang
                          , lt_server = NLPServer { server, url = Protolude.show url } }
           | (lang, NLPServerConfig { .. }) <- Map.toList ns]