module Reddit.Types.SearchOptions
  ( Order(..) ) where

import Network.API.Builder.Query

data Order = Relevance
           | New
           | Hot
           | Top
           | MostComments
  deriving (Int -> Order -> ShowS
[Order] -> ShowS
Order -> String
(Int -> Order -> ShowS)
-> (Order -> String) -> ([Order] -> ShowS) -> Show Order
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Order] -> ShowS
$cshowList :: [Order] -> ShowS
show :: Order -> String
$cshow :: Order -> String
showsPrec :: Int -> Order -> ShowS
$cshowsPrec :: Int -> Order -> ShowS
Show, ReadPrec [Order]
ReadPrec Order
Int -> ReadS Order
ReadS [Order]
(Int -> ReadS Order)
-> ReadS [Order]
-> ReadPrec Order
-> ReadPrec [Order]
-> Read Order
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [Order]
$creadListPrec :: ReadPrec [Order]
readPrec :: ReadPrec Order
$creadPrec :: ReadPrec Order
readList :: ReadS [Order]
$creadList :: ReadS [Order]
readsPrec :: Int -> ReadS Order
$creadsPrec :: Int -> ReadS Order
Read, Order -> Order -> Bool
(Order -> Order -> Bool) -> (Order -> Order -> Bool) -> Eq Order
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Order -> Order -> Bool
$c/= :: Order -> Order -> Bool
== :: Order -> Order -> Bool
$c== :: Order -> Order -> Bool
Eq)

instance ToQuery Order where
  toQuery :: Text -> Order -> [(Text, Text)]
toQuery Text
k Order
t = (Text, Text) -> [(Text, Text)]
forall (m :: * -> *) a. Monad m => a -> m a
return ((Text, Text) -> [(Text, Text)]) -> (Text, Text) -> [(Text, Text)]
forall a b. (a -> b) -> a -> b
$ (,) Text
k (Text -> (Text, Text)) -> Text -> (Text, Text)
forall a b. (a -> b) -> a -> b
$ case Order
t of
    Order
Relevance -> Text
"relevance"
    Order
New -> Text
"new"
    Order
Hot -> Text
"hot"
    Order
Top -> Text
"top"
    Order
MostComments -> Text
"comments"