servant-util-0.2: Servant servers utilities.
Safe HaskellNone
LanguageHaskell2010

Servant.Util.Combinators.Filtering.Construction

Description

Helpers for defining filters manually.

Synopsis

Documentation

noFilters :: FilteringSpec params Source #

Return all items.

mkFilteringSpec :: [SomeFilter params] -> FilteringSpec params Source #

Build a filtering specification. Used along with OverloadedLabels extension and ($) / ($=) operators.

Example:

filteringSpec :: FilteringSpec ["id" ?: 'AutoFilter Int, "desc" ?: 'ManualFilter Text]
filteringSpec = mkFilteringSpec
    [ -- Constructing an auto filter
    , #id ?/ FilterGT 0

      -- The following two lines are equivalent
    , #id ?/ FilterMatching 5
    , #id ?/= 5

      -- Constructing a manually implemented filter
    , #desc ?/~ "You are my sunshine, my only sunshine"
    ]

You can freely use fromList instead of this function.

(?/) :: forall name params filter. MkSomeFilter name filter params params => NameLabel name -> filter -> SomeFilter params infixr 0 Source #

"Filter by" operation. Wraps a filter corresponding to the given name into SomeFilter which can later be passed to mkSomeFilter.

(?/=) :: forall name params filter. MkSomeFilter name (FilterMatching filter) params params => NameLabel name -> filter -> SomeFilter params infixr 0 Source #

"Filter by matching" operation.

(?/<) :: forall name params filter. MkSomeFilter name (FilterComparing filter) params params => NameLabel name -> filter -> SomeFilter params infixr 0 Source #

Make a comparing filter.

(?/>) :: forall name params filter. MkSomeFilter name (FilterComparing filter) params params => NameLabel name -> filter -> SomeFilter params infixr 0 Source #

Make a comparing filter.

(?/<=) :: forall name params filter. MkSomeFilter name (FilterComparing filter) params params => NameLabel name -> filter -> SomeFilter params infixr 0 Source #

Make a comparing filter.

(?/>=) :: forall name params filter. MkSomeFilter name (FilterComparing filter) params params => NameLabel name -> filter -> SomeFilter params infixr 0 Source #

Make a comparing filter.

(?/~) :: forall name filter' params filter. (MkSomeFilter name filter' params params, Coercible filter filter') => NameLabel name -> filter -> SomeFilter params Source #

Construct a (manual) filter from a value with the same representation as expected one. Helpful when newtypes are heavely used in API parameters.

textLike :: forall name params text. (MkSomeFilter name (FilterLike text) params params, HasCallStack) => NameLabel name -> LText -> SomeFilter params infixr 0 Source #

Make a simple POSIX regex filter.

textILike :: forall name params text. (MkSomeFilter name (FilterLike text) params params, HasCallStack) => NameLabel name -> LText -> SomeFilter params infixr 0 Source #

Make a simple POSIX regex case-insensitive filter.

textContains :: forall name params text. MkSomeFilter name (FilterLike text) params params => NameLabel name -> Text -> SomeFilter params infixr 0 Source #

Make a filter that checks whether the given text is included.

textIContains :: forall name params text. MkSomeFilter name (FilterLike text) params params => NameLabel name -> Text -> SomeFilter params infixr 0 Source #

Make a filter that checks whether the given text is included, case-insensitive.

Orphan instances

Default (FilteringSpec params) Source #

By default noFilters is used.

Instance details

Methods

def :: FilteringSpec params #