]> Git — Sourcephile - gargantext.git/blob - src/Gargantext/Database/Node/Update.hs
[Database][Schema] NodeNodeNgram
[gargantext.git] / src / Gargantext / Database / Node / Update.hs
1 {-|
2 Module : Gargantext.Database.Node.Update
3 Description : Update Node in Database (Postgres)
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 NoImplicitPrelude #-}
13 {-# LANGUAGE QuasiQuotes #-}
14 {-# LANGUAGE OverloadedStrings #-}
15
16
17 module Gargantext.Database.Node.Update (Update(..), update) where
18
19 import Data.Text (Text)
20 import qualified Data.Text as DT
21 import Database.PostgreSQL.Simple
22
23 import Gargantext.Prelude
24
25 -- import Data.ByteString
26 --rename :: Connection -> NodeId -> Text -> IO ByteString
27 --rename conn nodeId name = formatQuery conn "UPDATE nodes SET name=? where id=?" (name,nodeId)
28 ------------------------------------------------------------------------
29 type NodeId = Int
30 type Name = Text
31 type ParentId = Int
32
33 data Update = Rename NodeId Name
34 | Move NodeId ParentId
35
36 -- | Update a Node
37 -- TODO : Field as parameter
38 -- TODO jsonb values, consider this:
39 -- https://stackoverflow.com/questions/26703476/how-to-perform-update-operations-on-columns-of-type-jsonb-in-postgres-9-4
40
41 unOnly :: Only a -> a
42 unOnly (Only a) = a
43
44 update :: Update -> Connection -> IO [Int]
45 update (Rename nId name) conn = map unOnly <$> query conn "UPDATE nodes SET name=? where id=? returning id"
46 (DT.take 255 name,nId)
47 update (Move nId pId) conn = map unOnly <$> query conn "UPDATE nodes SET parent_id= ? where id=? returning id"
48 (pId, nId)
49
50