[graphql] endpoint for returning context ngrams

parent 5401daf1
Pipeline #4110 passed with stages
in 62 minutes and 22 seconds
...@@ -31,6 +31,7 @@ import Data.Morpheus.Types ...@@ -31,6 +31,7 @@ import Data.Morpheus.Types
, Undefined(..) , Undefined(..)
) )
import Data.Proxy import Data.Proxy
import Data.Text (Text)
import Gargantext.API.Admin.Auth.Types (AuthenticatedUser) import Gargantext.API.Admin.Auth.Types (AuthenticatedUser)
import Gargantext.API.Admin.Orchestrator.Types (JobLog) import Gargantext.API.Admin.Orchestrator.Types (JobLog)
import Gargantext.API.Prelude (HasJobEnv') import Gargantext.API.Prelude (HasJobEnv')
...@@ -68,6 +69,7 @@ import Gargantext.API.Admin.Types (HasSettings) ...@@ -68,6 +69,7 @@ import Gargantext.API.Admin.Types (HasSettings)
data Query m data Query m
= Query = Query
{ annuaire_contacts :: GQLA.AnnuaireContactArgs -> m [GQLA.AnnuaireContact] { annuaire_contacts :: GQLA.AnnuaireContactArgs -> m [GQLA.AnnuaireContact]
, context_ngrams :: GQLCTX.ContextNgramsArgs -> m [Text]
, contexts :: GQLCTX.NodeContextArgs -> m [GQLCTX.NodeContextGQL] , contexts :: GQLCTX.NodeContextArgs -> m [GQLCTX.NodeContextGQL]
, contexts_for_ngrams :: GQLCTX.ContextsForNgramsArgs -> m [GQLCTX.ContextGQL] , contexts_for_ngrams :: GQLCTX.ContextsForNgramsArgs -> m [GQLCTX.ContextGQL]
, imt_schools :: GQLIMT.SchoolsArgs -> m [GQLIMT.School] , imt_schools :: GQLIMT.SchoolsArgs -> m [GQLIMT.School]
...@@ -112,6 +114,7 @@ rootResolver ...@@ -112,6 +114,7 @@ rootResolver
rootResolver = rootResolver =
RootResolver RootResolver
{ queryResolver = Query { annuaire_contacts = GQLA.resolveAnnuaireContacts { queryResolver = Query { annuaire_contacts = GQLA.resolveAnnuaireContacts
, context_ngrams = GQLCTX.resolveContextNgrams
, contexts = GQLCTX.resolveNodeContext , contexts = GQLCTX.resolveNodeContext
, contexts_for_ngrams = GQLCTX.resolveContextsForNgrams , contexts_for_ngrams = GQLCTX.resolveContextsForNgrams
, imt_schools = GQLIMT.resolveSchools , imt_schools = GQLIMT.resolveSchools
......
...@@ -20,7 +20,7 @@ import Gargantext.Core.Types.Search (HyperdataRow(..), toHyperdataRow) ...@@ -20,7 +20,7 @@ import Gargantext.Core.Types.Search (HyperdataRow(..), toHyperdataRow)
import Gargantext.Database.Admin.Types.Hyperdata (HyperdataDocument) import Gargantext.Database.Admin.Types.Hyperdata (HyperdataDocument)
import Gargantext.Database.Admin.Types.Node (ContextTitle, NodeId(..), NodeTypeId, UserId, unNodeId) import Gargantext.Database.Admin.Types.Node (ContextTitle, NodeId(..), NodeTypeId, UserId, unNodeId)
import Gargantext.Database.Prelude (CmdCommon) import Gargantext.Database.Prelude (CmdCommon)
import Gargantext.Database.Query.Table.NodeContext (getNodeContext, getContextsForNgramsTerms, ContextForNgramsTerms(..)) import Gargantext.Database.Query.Table.NodeContext (getNodeContext, getContextsForNgramsTerms, ContextForNgramsTerms(..), getContextNgrams)
import qualified Gargantext.Database.Query.Table.NodeContext as DNC import qualified Gargantext.Database.Query.Table.NodeContext as DNC
import Gargantext.Database.Schema.NodeContext (NodeContext, NodeContextPoly(..)) import Gargantext.Database.Schema.NodeContext (NodeContext, NodeContextPoly(..))
import Gargantext.Prelude import Gargantext.Prelude
...@@ -94,6 +94,12 @@ data NodeContextCategoryMArgs = NodeContextCategoryMArgs ...@@ -94,6 +94,12 @@ data NodeContextCategoryMArgs = NodeContextCategoryMArgs
, category :: Int , category :: Int
} deriving (Generic, GQLType) } deriving (Generic, GQLType)
data ContextNgramsArgs
= ContextNgramsArgs
{ context_id :: Int
, list_id :: Int }
deriving (Generic, GQLType)
type GqlM e env = Resolver QUERY e (GargM env GargError) type GqlM e env = Resolver QUERY e (GargM env GargError)
type GqlM' e env a = ResolverM e (GargM env GargError) a type GqlM' e env a = ResolverM e (GargM env GargError) a
...@@ -112,6 +118,12 @@ resolveContextsForNgrams ...@@ -112,6 +118,12 @@ resolveContextsForNgrams
resolveContextsForNgrams ContextsForNgramsArgs { corpus_id, ngrams_terms } = resolveContextsForNgrams ContextsForNgramsArgs { corpus_id, ngrams_terms } =
dbContextForNgrams corpus_id ngrams_terms dbContextForNgrams corpus_id ngrams_terms
resolveContextNgrams
:: (CmdCommon env)
=> ContextNgramsArgs -> GqlM e env [Text]
resolveContextNgrams ContextNgramsArgs { context_id, list_id } =
dbContextNgrams context_id list_id
-- DB -- DB
-- | Inner function to fetch the node context DB. -- | Inner function to fetch the node context DB.
...@@ -134,6 +146,12 @@ dbContextForNgrams node_id ngrams_terms = do ...@@ -134,6 +146,12 @@ dbContextForNgrams node_id ngrams_terms = do
--lift $ printDebug "[dbContextForNgrams] contextsForNgramsTerms" contextsForNgramsTerms --lift $ printDebug "[dbContextForNgrams] contextsForNgramsTerms" contextsForNgramsTerms
pure $ toContextGQL <$> contextsForNgramsTerms pure $ toContextGQL <$> contextsForNgramsTerms
dbContextNgrams
:: (CmdCommon env)
=> Int -> Int -> GqlM e env [Text]
dbContextNgrams context_id list_id = do
lift $ getContextNgrams (NodeId context_id) (NodeId list_id)
-- Conversion functions -- Conversion functions
toNodeContextGQL :: NodeContext -> NodeContextGQL toNodeContextGQL :: NodeContext -> NodeContextGQL
......
...@@ -33,6 +33,7 @@ module Gargantext.Database.Query.Table.NodeContext ...@@ -33,6 +33,7 @@ module Gargantext.Database.Query.Table.NodeContext
, getContextsForNgrams , getContextsForNgrams
, ContextForNgrams(..) , ContextForNgrams(..)
, getContextsForNgramsTerms , getContextsForNgramsTerms
, getContextNgrams
, ContextForNgramsTerms(..) , ContextForNgramsTerms(..)
, insertNodeContext , insertNodeContext
, deleteNodeContext , deleteNodeContext
...@@ -188,6 +189,23 @@ getContextsForNgramsTerms cId ngramsTerms = do ...@@ -188,6 +189,23 @@ getContextsForNgramsTerms cId ngramsTerms = do
AND ngrams.terms IN ?) t AND ngrams.terms IN ?) t
ORDER BY t.doc_count DESC |] ORDER BY t.doc_count DESC |]
getContextNgrams :: HasNodeError err
=> NodeId
-> NodeId
-> Cmd err [Text]
getContextNgrams contextId listId = do
res <- runPGSQuery query (contextId, listId)
pure $ (\(PGS.Only term) -> term) <$> res
where
query :: PGS.Query
query = [sql| SELECT ngrams.terms
FROM context_node_ngrams
JOIN ngrams ON ngrams.id = ngrams_id
WHERE context_id = ?
AND node_id = ? |]
------------------------------------------------------------------------ ------------------------------------------------------------------------
insertNodeContext :: [NodeContext] -> Cmd err Int insertNodeContext :: [NodeContext] -> Cmd err Int
insertNodeContext ns = mkCmd $ \conn -> fromIntegral <$> (runInsert_ conn insertNodeContext ns = mkCmd $ \conn -> fromIntegral <$> (runInsert_ conn
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment