| GEFilter a FilterValue -- ^ @>=@ /field/ /value/
| RegexpFilter a FilterRegex -- ^ @=~@ /field/ /regexp/
| ContainsFilter a FilterValue -- ^ @=[]@ /list-field/ /value/
- deriving (Show, Eq)
+ deriving (Show, Eq, Ord, Functor, Foldable, Traversable)
+ -- | Get the \"things\" a filter talks about. This is useful, e.g.,
+ -- to decide which additional fields to fetch in a query depending
+ -- on live data.
+ filterArguments :: Filter a -> [a]
+ filterArguments = toList
+
-- | Serialiser for the 'Filter' data type.
showFilter :: (JSON a) => Filter a -> JSValue
showFilter (EmptyFilter) = JSNull
-- based on the gathered data
runtimes <- (case collector of
CollectorSimple collFn -> lift $ collFn live' cfg fobjects
- CollectorFieldAware collFn -> lift $ collFn live' cfg fields fobjects) >>=
- (toError . filterM (\(obj, runtime) ->
+ CollectorFieldAware collFn -> lift $ collFn live' cfg allfields fobjects)
+ >>= (toError . filterM (\(obj, runtime) ->
- evaluateFilter cfg (Just runtime) obj cfilter))
+ evaluateQueryFilter cfg (Just runtime) obj cfilter))
let fdata = map (\(obj, runtime) ->
map (execGetter cfg runtime obj) fgetters)
runtimes