module Data.Factual.Query.FacetsQuery
(
FacetsQuery(..)
, module Data.Factual.Shared.Table
, module Data.Factual.Shared.Search
, module Data.Factual.Shared.Filter
, module Data.Factual.Shared.Geo
) where
import Data.Factual.Query
import Data.Factual.Shared.Table
import Data.Factual.Shared.Search
import Data.Factual.Shared.Filter
import Data.Factual.Shared.Geo
import Data.Factual.Utils
import Network.HTTP.Base (urlEncode)
data FacetsQuery = FacetsQuery { table :: Table
, search :: Search
, select :: [String]
, filters :: [Filter]
, geo :: Maybe Geo
, limit :: Maybe Int
, minCount :: Maybe Int
, includeCount :: Bool
} deriving (Eq, Show)
instance Query FacetsQuery where
toPath query = (show $ table query)
++ "/facets?"
++ joinAndFilter [ searchString $ search query
, selectString $ select query
, filtersString $ filters query
, geoString $ geo query
, limitString $ limit query
, minCountString $ minCount query
, includeCountString $ includeCount query ]
minCountString :: Maybe Int -> String
minCountString (Just x) = "min_count=" ++ (urlEncode $ show x)
minCountString Nothing = ""