]> Git — Sourcephile - gargantext.git/blob - src/Gargantext/Database/Query/Table/Node/Select.hs
[REFACT] Text -> Core
[gargantext.git] / src / Gargantext / Database / Query / Table / Node / Select.hs
1 {-|
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
8 Portability : POSIX
9 -}
10
11
12 {-# LANGUAGE Arrows #-}
13
14 module Gargantext.Database.Query.Table.Node.Select
15 where
16
17 import Control.Arrow (returnA)
18 import Opaleye
19 import Protolude
20
21 import Gargantext.Core.Types
22 import Gargantext.Core.Types.Individu (Username)
23 import Gargantext.Database.Admin.Config
24 import Gargantext.Database.Prelude
25 import Gargantext.Database.Schema.Node
26 import Gargantext.Database.Schema.User
27 import Gargantext.Database.Query.Table.User
28
29 selectNodesWithUsername :: NodeType -> Username -> Cmd err [NodeId]
30 selectNodesWithUsername nt u = runOpaQuery (q u)
31 where
32 q u' = proc () -> do
33 (n,usrs) <- join' -< ()
34 restrict -< user_username usrs .== (toNullable $ pgStrictText u')
35 restrict -< _node_typename n .== (pgInt4 $ nodeTypeId nt)
36 returnA -< _node_id n
37
38 join' :: Query (NodeRead, UserReadNull)
39 join' = leftJoin queryNodeTable queryUserTable on1
40 where
41 on1 (n,us) = _node_userId n .== user_id us
42