]> Git — Sourcephile - gargantext.git/blob - src/Gargantext/Database/Query/Table/Node/Select.hs
Merge branch 'dev-ilike-search-fix' into dev-corpora-from-write-nodes
[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
22 import Gargantext.Core.Types
23 import Gargantext.Core.Types.Individu (Username)
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 :: HasDBid NodeType => 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 $ sqlStrictText u')
35 restrict -< _node_typename n .== (sqlInt4 $ toDBid 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_user_id n .== user_id us
42