module Reddit.Actions.Search where

import Reddit.Routes.Search
import Reddit.Types.Options
import Reddit.Types.Post
import Reddit.Types.Reddit
import Reddit.Types.Subreddit
import qualified Reddit.Types.SearchOptions as Search

import Data.Text (Text)

search :: Monad m => Maybe SubredditName -> Options PostID -> Search.Order -> Text -> RedditT m PostListing
search :: Maybe SubredditName
-> Options PostID -> Order -> Text -> RedditT m PostListing
search Maybe SubredditName
sub Options PostID
opts Order
order Text
query =
  Route -> RedditT m PostListing
forall a (m :: * -> *).
(FromJSON a, Monad m) =>
Route -> RedditT m a
runRoute (Route -> RedditT m PostListing) -> Route -> RedditT m PostListing
forall a b. (a -> b) -> a -> b
$ Maybe SubredditName
-> Options PostID -> Order -> Maybe Text -> Text -> Route
searchRoute Maybe SubredditName
sub Options PostID
opts Order
order Maybe Text
forall a. Maybe a
Nothing Text
query

luceneSearch :: Monad m => Maybe SubredditName -> Options PostID -> Search.Order -> Text -> RedditT m PostListing
luceneSearch :: Maybe SubredditName
-> Options PostID -> Order -> Text -> RedditT m PostListing
luceneSearch Maybe SubredditName
sub Options PostID
opts Order
order Text
query =
  Route -> RedditT m PostListing
forall a (m :: * -> *).
(FromJSON a, Monad m) =>
Route -> RedditT m a
runRoute (Route -> RedditT m PostListing) -> Route -> RedditT m PostListing
forall a b. (a -> b) -> a -> b
$ Maybe SubredditName
-> Options PostID -> Order -> Maybe Text -> Text -> Route
searchRoute Maybe SubredditName
sub Options PostID
opts Order
order (Text -> Maybe Text
forall a. a -> Maybe a
Just Text
"lucene") Text
query

cloudSearch :: Monad m => Maybe SubredditName -> Options PostID -> Search.Order -> Text -> RedditT m PostListing
cloudSearch :: Maybe SubredditName
-> Options PostID -> Order -> Text -> RedditT m PostListing
cloudSearch Maybe SubredditName
sub Options PostID
opts Order
order Text
query =
  Route -> RedditT m PostListing
forall a (m :: * -> *).
(FromJSON a, Monad m) =>
Route -> RedditT m a
runRoute (Route -> RedditT m PostListing) -> Route -> RedditT m PostListing
forall a b. (a -> b) -> a -> b
$ Maybe SubredditName
-> Options PostID -> Order -> Maybe Text -> Text -> Route
searchRoute Maybe SubredditName
sub Options PostID
opts Order
order (Text -> Maybe Text
forall a. a -> Maybe a
Just Text
"cloudsearch") Text
query