Commit 7cc5e33d authored by Przemyslaw Kaminski's avatar Przemyslaw Kaminski

[IMT] backend serves imt orgs via graphql

parent f1538012
Pipeline #2622 failed with stage
in 54 minutes and 12 seconds
...@@ -33,6 +33,7 @@ import Gargantext.API.Admin.Auth.Types (AuthenticatedUser) ...@@ -33,6 +33,7 @@ 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')
import qualified Gargantext.API.GraphQL.AsyncTask as GQLAT import qualified Gargantext.API.GraphQL.AsyncTask as GQLAT
import qualified Gargantext.API.GraphQL.IMT as GQLIMT
import qualified Gargantext.API.GraphQL.Node as GQLNode import qualified Gargantext.API.GraphQL.Node as GQLNode
import qualified Gargantext.API.GraphQL.User as GQLUser import qualified Gargantext.API.GraphQL.User as GQLUser
import qualified Gargantext.API.GraphQL.UserInfo as GQLUserInfo import qualified Gargantext.API.GraphQL.UserInfo as GQLUserInfo
...@@ -61,7 +62,8 @@ import qualified Servant.Auth.Server as SAS ...@@ -61,7 +62,8 @@ import qualified Servant.Auth.Server as SAS
-- | Represents possible GraphQL queries. -- | Represents possible GraphQL queries.
data Query m data Query m
= Query = Query
{ job_logs :: GQLAT.JobLogArgs -> m (Map Int JobLog) { imt_schools :: GQLIMT.SchoolsArgs -> m [GQLIMT.School]
, job_logs :: GQLAT.JobLogArgs -> m (Map Int JobLog)
, nodes :: GQLNode.NodeArgs -> m [GQLNode.Node] , nodes :: GQLNode.NodeArgs -> m [GQLNode.Node]
, node_parent :: GQLNode.NodeParentArgs -> m [GQLNode.Node] , node_parent :: GQLNode.NodeParentArgs -> m [GQLNode.Node]
, user_infos :: GQLUserInfo.UserInfoArgs -> m [GQLUserInfo.UserInfo] , user_infos :: GQLUserInfo.UserInfoArgs -> m [GQLUserInfo.UserInfo]
...@@ -96,7 +98,8 @@ rootResolver ...@@ -96,7 +98,8 @@ rootResolver
=> RootResolver (GargM env GargError) e Query Mutation Undefined => RootResolver (GargM env GargError) e Query Mutation Undefined
rootResolver = rootResolver =
RootResolver RootResolver
{ queryResolver = Query { job_logs = GQLAT.resolveJobLogs { queryResolver = Query { imt_schools = GQLIMT.resolveSchools
, job_logs = GQLAT.resolveJobLogs
, nodes = GQLNode.resolveNodes , nodes = GQLNode.resolveNodes
, node_parent = GQLNode.resolveNodeParent , node_parent = GQLNode.resolveNodeParent
, user_infos = GQLUserInfo.resolveUserInfos , user_infos = GQLUserInfo.resolveUserInfos
......
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
{-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE DeriveAnyClass #-}
{-# LANGUAGE DuplicateRecordFields #-} {-# LANGUAGE DuplicateRecordFields #-}
...@@ -9,24 +8,18 @@ import Control.Concurrent.MVar (readMVar) ...@@ -9,24 +8,18 @@ import Control.Concurrent.MVar (readMVar)
import Control.Lens import Control.Lens
import Data.Map (Map) import Data.Map (Map)
import qualified Data.Map as Map import qualified Data.Map as Map
import Control.Monad.Base (liftBase)
import Control.Monad.Reader (ask, liftIO) import Control.Monad.Reader (ask, liftIO)
import Data.Either (Either(..)) import Data.Either (Either(..))
import qualified Data.IntMap.Strict as IntMap import qualified Data.IntMap.Strict as IntMap
import Data.Maybe (Maybe(..), catMaybes) import Data.Maybe (catMaybes)
import Data.Morpheus.Types import Data.Morpheus.Types
( GQLType ( GQLType
, Resolver , Resolver
, ResolverM
, QUERY , QUERY
, lift , lift
) )
import Data.Text (Text)
import qualified Data.Text as T
import Gargantext.API.Admin.Orchestrator.Types (JobLog(..)) import Gargantext.API.Admin.Orchestrator.Types (JobLog(..))
import Gargantext.API.Prelude (GargM, GargError, HasJobEnv') import Gargantext.API.Prelude (GargM, GargError, HasJobEnv')
import Gargantext.Core.Mail.Types (HasMail)
import Gargantext.Database.Admin.Types.Node (NodeId(..))
import Gargantext.Database.Prelude (HasConnectionPool, HasConfig) import Gargantext.Database.Prelude (HasConnectionPool, HasConfig)
import Gargantext.Prelude import Gargantext.Prelude
import GHC.Generics (Generic) import GHC.Generics (Generic)
......
{-# LANGUAGE DeriveAnyClass #-}
{-# LANGUAGE DuplicateRecordFields #-}
module Gargantext.API.GraphQL.IMT
( School(..)
, SchoolsArgs(..)
, resolveSchools
)
where
import Data.Morpheus.Types
( GQLType
, Resolver
, QUERY
)
import Gargantext.API.Prelude (GargM, GargError)
import Gargantext.Core.Ext.IMT (School(..), schools)
import Gargantext.Prelude
import GHC.Generics (Generic)
data SchoolsArgs
= SchoolsArgs
{ } deriving (Generic, GQLType)
type GqlM e env = Resolver QUERY e (GargM env GargError)
resolveSchools
:: SchoolsArgs -> GqlM e env [School]
resolveSchools SchoolsArgs { } = pure $ schools
{-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE DeriveAnyClass #-}
{-# LANGUAGE DuplicateRecordFields #-} {-# LANGUAGE DuplicateRecordFields #-}
......
{-# LANGUAGE DeriveAnyClass #-}
{-| {-|
Module : Gargantext.API Module : Gargantext.API
Description : Server API Description : Server API
...@@ -21,6 +23,9 @@ import qualified Data.Vector as DV ...@@ -21,6 +23,9 @@ import qualified Data.Vector as DV
import qualified Data.Map as M import qualified Data.Map as M
import qualified Prelude import qualified Prelude
import Data.Morpheus.Types (GQLType)
import GHC.Generics (Generic)
import Gargantext.Prelude import Gargantext.Prelude
import Gargantext.Core.Text.Metrics.Utils as Utils import Gargantext.Core.Text.Metrics.Utils as Utils
...@@ -29,74 +34,75 @@ import Gargantext.Core.Text.Corpus.Parsers.CSV as CSV ...@@ -29,74 +34,75 @@ import Gargantext.Core.Text.Corpus.Parsers.CSV as CSV
data School = School { school_shortName :: Text data School = School { school_shortName :: Text
, school_longName :: Text , school_longName :: Text
, school_id :: Text , school_id :: Text
} deriving (Show, Read, Eq) } deriving (Generic, GQLType, Show, Read, Eq)
schools :: [School] schools :: [School]
schools = [ School schools =
{ school_shortName = "Mines Albi-Carmaux" [ School
, school_longName = "Mines Albi-Carmaux - École nationale supérieure des Mines d'Albi‐Carmaux" { school_shortName = "ARMINES"
, school_id = "469216" } , school_longName = "ARMINES"
, School , school_id = "300104" }
{ school_shortName = "Mines Alès" , School
, school_longName = "EMA - École des Mines d'Alès" { school_shortName = "Eurecom"
, school_id = "6279" } , school_longName = "Eurecom"
, School , school_id = "421532" }
{ school_shortName = "Mines Douai" , School
, school_longName = "Mines Douai EMD - École des Mines de Douai" { school_shortName = "IMT Atlantique"
, school_id = "224096" } , school_longName = "IMT Atlantique - IMT Atlantique Bretagne-Pays de la Loire"
, School , school_id = "481355" }
{ school_shortName = "Mines Lille" , School
, school_longName = "Mines Lille - École des Mines de Lille" { school_shortName = "IMT Business School"
, school_id = "144103" } , school_longName = "IMT Business School"
, School , school_id = "542824" }
{ school_shortName = "IMT Lille Douai" , School
, school_longName = "IMT Lille Douai" { school_shortName = "IMT Lille Douai"
, school_id = "497330" } , school_longName = "IMT Lille Douai"
, School , school_id = "497330" }
{ school_shortName = "Mines Nantes" , School
, school_longName = "Mines Nantes - Mines Nantes" { school_shortName = "Mines Albi-Carmaux"
, school_id = "84538" } , school_longName = "Mines Albi-Carmaux - École nationale supérieure des Mines d'Albi‐Carmaux"
, School , school_id = "469216" }
{ school_shortName = "Télécom Bretagne" , School
, school_longName = "Télécom Bretagne" { school_shortName = "Mines Alès"
, school_id = "301262" } , school_longName = "EMA - École des Mines d'Alès"
, School , school_id = "6279" }
{ school_shortName = "IMT Atlantique" , School
, school_longName = "IMT Atlantique - IMT Atlantique Bretagne-Pays de la Loire" { school_shortName = "Mines Douai"
, school_id = "481355" } , school_longName = "Mines Douai EMD - École des Mines de Douai"
, School , school_id = "224096" }
{ school_shortName = "Mines Saint-Étienne" , School
, school_longName = "Mines Saint-Étienne MSE - École des Mines de Saint-Étienne" { school_shortName = "Mines Lille"
, school_id = "29212" } , school_longName = "Mines Lille - École des Mines de Lille"
, School , school_id = "144103" }
{ school_shortName = "Télécom École de Management" , School
, school_longName = "TEM - Télécom Ecole de Management" { school_shortName = "Mines Nantes"
, school_id = "301442" } , school_longName = "Mines Nantes - Mines Nantes"
, School , school_id = "84538" }
{ school_shortName = "IMT Business School" , School
, school_longName = "IMT Business School" { school_shortName = "Mines ParisTech"
, school_id = "542824" } , school_longName = "MINES ParisTech - École nationale supérieure des mines de Paris"
, School , school_id = "301492" }
{ school_shortName = "Télécom ParisTech" , School
, school_longName = "Télécom ParisTech" { school_shortName = "Mines Saint-Étienne"
, school_id = "300362" } , school_longName = "Mines Saint-Étienne MSE - École des Mines de Saint-Étienne"
, School , school_id = "29212" }
{ school_shortName = "Télécom SudParis" , School
, school_longName = "TSP - Télécom SudParis" { school_shortName = "Télécom Bretagne"
, school_id = "352124" } , school_longName = "Télécom Bretagne"
, School , school_id = "301262" }
{ school_shortName = "ARMINES" , School
, school_longName = "ARMINES" { school_shortName = "Télécom École de Management"
, school_id = "300362" } , school_longName = "TEM - Télécom Ecole de Management"
, School , school_id = "301442" }
{ school_shortName = "Eurecom" , School
, school_longName = "Eurecom" { school_shortName = "Télécom ParisTech"
, school_id = "421532" } , school_longName = "Télécom ParisTech"
, School , school_id = "300362" }
{ school_shortName = "Mines ParisTech" , School
, school_longName = "MINES ParisTech - École nationale supérieure des mines de Paris" { school_shortName = "Télécom SudParis"
, school_id = "301492" } , school_longName = "TSP - Télécom SudParis"
] , school_id = "352124" }
]
mapIdSchool :: Map Text Text mapIdSchool :: Map Text Text
mapIdSchool = M.fromList $ Gargantext.Prelude.map mapIdSchool = M.fromList $ Gargantext.Prelude.map
......
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