2 Module : Gargantext.API.Node.Share
4 Copyright : (c) CNRS, 2017-Present
5 License : AGPL + CECILL v3
6 Maintainer : team@gargantext.org
7 Stability : experimental
12 {-# LANGUAGE TemplateHaskell #-}
13 {-# LANGUAGE TypeOperators #-}
14 {-# OPTIONS_GHC -fno-warn-orphans #-}
16 module Gargantext.API.Node.Share
21 import Data.Text (Text)
22 import GHC.Generics (Generic)
23 import Gargantext.Core.Types.Individu (User(..))
24 import Gargantext.Database.Action.Share (shareNodeWith)
25 import Gargantext.Database.Admin.Types.Node
26 import Gargantext.Database.Prelude
27 import Gargantext.Database.Query.Table.Node.Error (HasNodeError(..))
28 import Gargantext.Prelude
30 import Test.QuickCheck (elements)
31 import Test.QuickCheck.Arbitrary
33 ------------------------------------------------------------------------
34 data ShareNode = ShareNode { username :: Text }
36 ------------------------------------------------------------------------
37 -- TODO unPrefix "pn_" FromJSON, ToJSON, ToSchema, adapt frontend.
38 instance FromJSON ShareNode
39 instance ToJSON ShareNode
40 instance ToSchema ShareNode
41 instance Arbitrary ShareNode where
42 arbitrary = elements [ ShareNode "user1"
45 ------------------------------------------------------------------------
47 api :: HasNodeError err
51 api nId (ShareNode user) =
52 fromIntegral <$> shareNodeWith nId (UserName user)
54 ------------------------------------------------------------------------
55 type API = Summary " Share Node with username"
56 :> ReqBody '[JSON] ShareNode