module Data.Factual.Query.ReadQuery
(
ReadQuery(..)
, module Data.Factual.Shared.Table
, module Data.Factual.Shared.Search
, module Data.Factual.Shared.SortOrder
, 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.SortOrder
import Data.Factual.Shared.Filter
import Data.Factual.Shared.Geo
import Data.Factual.Utils
import qualified Data.Map as M
data ReadQuery = ReadQuery { table :: Table
, search :: Search
, select :: [String]
, limit :: Maybe Int
, offset :: Maybe Int
, filters :: [Filter]
, geo :: Maybe Geo
, sort :: [SortOrder]
, includeCount :: Bool
} deriving (Eq, Show)
instance Query ReadQuery where
path query = show $ table query
params query = M.fromList [ searchPair $ search query
, selectPair $ select query
, limitPair $ limit query
, offsetPair $ offset query
, filtersPair $ filters query
, geoPair $ geo query
, sortPair $ sort query
, includeCountPair $ includeCount query ]
offsetPair :: Maybe Int -> (String, String)
offsetPair (Just x) = ("offset", show x)
offsetPair Nothing = ("offset", "")