2 Module : Gargantext.Database.Node.Select
3 Description : Main requests of Node to the database
4 Copyright : (c) CNRS, 2017-Present
5 License : AGPL + CECILL v3
6 Maintainer : team@gargantext.org
7 Stability : experimental
12 {-# LANGUAGE Arrows #-}
13 {-# LANGUAGE FlexibleInstances #-}
14 {-# LANGUAGE FlexibleContexts #-}
15 {-# LANGUAGE RankNTypes #-}
17 module Gargantext.Database.Node.Select where
20 import Gargantext.Core.Types
21 import Gargantext.Database.Schema.Node
22 import Gargantext.Database.Utils
23 import Gargantext.Database.Config
24 import Gargantext.Database.Schema.User
25 import Gargantext.Core.Types.Individu (Username)
26 import Control.Arrow (returnA)
28 selectNodesWithUsername :: NodeType -> Username -> Cmd err [NodeId]
29 selectNodesWithUsername nt u = runOpaQuery (q u)
32 (n,usrs) <- join -< ()
33 restrict -< user_username usrs .== (toNullable $ pgStrictText u')
34 restrict -< _node_typename n .== (pgInt4 $ nodeTypeId nt)
37 join :: Query (NodeRead, UserReadNull)
38 join = leftJoin queryNodeTable queryUserTable on1
40 on1 (n,us) = _node_userId n .== user_id us