module Gargantext.API.Members where import Gargantext.Prelude import Gargantext.API.Prelude import Servant import Data.Text (Text) import Gargantext.API.Admin.EnvTypes (Env) import Gargantext.Core.Types (UserId) import Gargantext.Database.Admin.Types.Node (NodeType(NodeTeam)) import Gargantext.Database.Query.Table.Node (getNodesIdWithType) import Gargantext.Database.Action.Share (membersOf) import Gargantext.Database.Prelude (HasConnectionPool, HasConfig) import Gargantext.Core.Mail.Types (HasMail) import Control.Monad.Extra (concatMapM) type MembersAPI = Get '[JSON] [Text] members :: UserId -> ServerT MembersAPI (GargM Env GargError) members _ = do getMembers getMembers :: (HasConnectionPool env, HasConfig env, HasMail env) => GargM env GargError [Text] getMembers = do teamNodeIds <- getNodesIdWithType NodeTeam m <- concatMapM membersOf teamNodeIds pure $ map fst m