]> Git — Sourcephile - gargantext.git/blob - src/Gargantext/API/Corpus/New.hs
ElEve..
[gargantext.git] / src / Gargantext / API / Corpus / New.hs
1 {-|
2 Module : Gargantext.API.Corpus.New
3 Description : New corpus API
4 Copyright : (c) CNRS, 2017-Present
5 License : AGPL + CECILL v3
6 Maintainer : team@gargantext.org
7 Stability : experimental
8 Portability : POSIX
9
10 New corpus means either:
11 - new corpus
12 - new data in existing corpus
13 -}
14
15 {-# LANGUAGE NoImplicitPrelude #-}
16 {-# LANGUAGE TemplateHaskell #-}
17 {-# LANGUAGE DeriveGeneric #-}
18 {-# LANGUAGE DataKinds #-}
19 {-# LANGUAGE TypeOperators #-}
20 {-# LANGUAGE OverloadedStrings #-}
21 {-# LANGUAGE FlexibleContexts #-}
22 {-# LANGUAGE RankNTypes #-}
23
24 module Gargantext.API.Corpus.New
25 where
26
27 import Data.Aeson.TH (deriveJSON)
28 import Data.Swagger
29 import Data.Text (Text)
30 import GHC.Generics (Generic)
31 import Gargantext.Core (Lang(..))
32 import Gargantext.Core.Utils.Prefix (unPrefix)
33 import Gargantext.Database.Flow (flowCorpusSearchInDatabase)
34 import Gargantext.Database.Types.Node (CorpusId)
35 import Gargantext.Prelude
36 import Servant
37 import Test.QuickCheck (elements)
38 import Test.QuickCheck.Arbitrary
39 import Gargantext.Database.Flow (FlowCmdM)
40
41 data Query = Query { query_query :: Text
42 , query_corpus_id :: Int
43 }
44 deriving (Eq, Show, Generic)
45
46 deriveJSON (unPrefix "query_") ''Query
47
48
49 instance Arbitrary Query where
50 arbitrary = elements [ Query q n
51 | q <- ["a","b"]
52 , n <- [0..10]
53 ]
54
55 instance ToSchema Query
56
57
58 type Api = Summary "New Corpus endpoint"
59 :> ReqBody '[JSON] Query
60 :> Post '[JSON] CorpusId
61
62
63 api :: FlowCmdM env err m => Query -> m CorpusId
64 api (Query q _) = do
65 cId <- flowCorpusSearchInDatabase "user1" EN q
66 pure cId