]> Git — Sourcephile - gargantext.git/blob - src/Gargantext/Database/Query/Table/Node/Select.hs
[DB/Errors] DoesNotExist Node error (todo remove useless errors type).
[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 {-# LANGUAGE FlexibleInstances #-}
14 {-# LANGUAGE FlexibleContexts #-}
15 {-# LANGUAGE RankNTypes #-}
16
17 module Gargantext.Database.Query.Table.Node.Select
18 where
19
20 import Control.Arrow (returnA)
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 import Opaleye
29
30 selectNodesWithUsername :: NodeType -> Username -> Cmd err [NodeId]
31 selectNodesWithUsername nt u = runOpaQuery (q u)
32 where
33 q u' = proc () -> do
34 (n,usrs) <- join -< ()
35 restrict -< user_username usrs .== (toNullable $ pgStrictText u')
36 restrict -< _node_typename n .== (pgInt4 $ nodeTypeId nt)
37 returnA -< _node_id n
38
39 join :: Query (NodeRead, UserReadNull)
40 join = leftJoin queryNodeTable queryUserTable on1
41 where
42 on1 (n,us) = _node_userId n .== user_id us
43