Commit 8c570825 authored by Alexandre Delanoë's avatar Alexandre Delanoë

[WIP] First specification for #145 issue

parent de1fddb3
Pipeline #3258 failed with stage
in 46 minutes and 55 seconds
...@@ -18,6 +18,7 @@ module Gargantext.API.Search ...@@ -18,6 +18,7 @@ module Gargantext.API.Search
where where
import Data.Aeson hiding (defaultTaggedObject) import Data.Aeson hiding (defaultTaggedObject)
import Data.List (concat)
import Data.Maybe (fromMaybe) import Data.Maybe (fromMaybe)
import Data.Swagger hiding (fieldLabelModifier, Contact) import Data.Swagger hiding (fieldLabelModifier, Contact)
import Data.Text (Text) import Data.Text (Text)
...@@ -55,7 +56,7 @@ api :: NodeId -> GargServer (API SearchResult) ...@@ -55,7 +56,7 @@ api :: NodeId -> GargServer (API SearchResult)
api nId (SearchQuery q SearchDoc) o l order = api nId (SearchQuery q SearchDoc) o l order =
SearchResult <$> SearchResultDoc SearchResult <$> SearchResultDoc
<$> map (toRow nId) <$> map (toRow nId)
<$> searchInCorpus nId False q o l order <$> searchInCorpus nId False (concat q) o l order
api nId (SearchQuery q SearchContact) o l order = do api nId (SearchQuery q SearchContact) o l order = do
printDebug "isPairedWith" nId printDebug "isPairedWith" nId
...@@ -67,13 +68,15 @@ api nId (SearchQuery q SearchContact) o l order = do ...@@ -67,13 +68,15 @@ api nId (SearchQuery q SearchContact) o l order = do
Just aId -> SearchResult Just aId -> SearchResult
<$> SearchResultContact <$> SearchResultContact
<$> map (toRow aId) <$> map (toRow aId)
<$> searchInCorpusWithContacts nId aId q o l order <$> searchInCorpusWithContacts nId aId (concat q) o l order
api nId (SearchQuery q SearchDocWithNgrams) o l order = undefined
----------------------------------------------------------------------- -----------------------------------------------------------------------
----------------------------------------------------------------------- -----------------------------------------------------------------------
-- | Main Types -- | Main Types
----------------------------------------------------------------------- -----------------------------------------------------------------------
data SearchType = SearchDoc | SearchContact data SearchType = SearchDoc | SearchContact | SearchDocWithNgrams
deriving (Generic) deriving (Generic)
instance FromJSON SearchType where instance FromJSON SearchType where
parseJSON = genericParseJSON (defaultOptions { sumEncoding = ObjectWithSingleField }) parseJSON = genericParseJSON (defaultOptions { sumEncoding = ObjectWithSingleField })
...@@ -85,7 +88,7 @@ instance Arbitrary SearchType where ...@@ -85,7 +88,7 @@ instance Arbitrary SearchType where
----------------------------------------------------------------------- -----------------------------------------------------------------------
data SearchQuery = data SearchQuery =
SearchQuery { query :: ![Text] SearchQuery { query :: ![[Text]]
, expected :: !SearchType , expected :: !SearchType
} }
deriving (Generic) deriving (Generic)
...@@ -100,7 +103,7 @@ instance ToSchema SearchQuery ...@@ -100,7 +103,7 @@ instance ToSchema SearchQuery
-} -}
instance Arbitrary SearchQuery where instance Arbitrary SearchQuery where
arbitrary = elements [SearchQuery ["electrodes"] SearchDoc] arbitrary = elements [SearchQuery [["electrodes"]] SearchDoc]
-- arbitrary = elements [SearchQuery "electrodes" 1 ] --SearchDoc] -- arbitrary = elements [SearchQuery "electrodes" 1 ] --SearchDoc]
----------------------------------------------------------------------- -----------------------------------------------------------------------
data SearchResult = data SearchResult =
......
...@@ -27,6 +27,7 @@ import Gargantext.Database.Query.Join (leftJoin5) ...@@ -27,6 +27,7 @@ import Gargantext.Database.Query.Join (leftJoin5)
import Gargantext.Database.Query.Table.Node import Gargantext.Database.Query.Table.Node
import Gargantext.Database.Query.Table.Context import Gargantext.Database.Query.Table.Context
import Gargantext.Database.Query.Table.NodeContext import Gargantext.Database.Query.Table.NodeContext
import Gargantext.Database.Schema.Ngrams (NgramsType(..))
import Gargantext.Database.Query.Table.NodeContext_NodeContext import Gargantext.Database.Query.Table.NodeContext_NodeContext
import Gargantext.Database.Schema.Node import Gargantext.Database.Schema.Node
import Gargantext.Database.Schema.Context import Gargantext.Database.Schema.Context
...@@ -51,6 +52,21 @@ searchDocInDatabase p t = runOpaQuery (queryDocInDatabase p t) ...@@ -51,6 +52,21 @@ searchDocInDatabase p t = runOpaQuery (queryDocInDatabase p t)
restrict -< (_ns_typename row) .== (sqlInt4 $ toDBid NodeDocument) restrict -< (_ns_typename row) .== (sqlInt4 $ toDBid NodeDocument)
returnA -< (_ns_id row, _ns_hyperdata row) returnA -< (_ns_id row, _ns_hyperdata row)
------------------------------------------------------------------------
searchInCorpusWithNgrams :: HasDBid NodeType
=> CorpusId
-> ListId
-> IsTrash
-> NgramsType
-> [[Text]]
-> Maybe Offset
-> Maybe Limit
-> Maybe OrderBy
-> Cmd err [FacetDoc]
searchInCorpusWithNgrams cId lId t ngt q o l order = undefined
------------------------------------------------------------------------ ------------------------------------------------------------------------
-- | todo add limit and offset and order -- | todo add limit and offset and order
searchInCorpus :: HasDBid NodeType searchInCorpus :: HasDBid NodeType
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment