Safe Haskell | None |
---|---|
Language | Haskell2010 |
Helpers for defining filters manually.
Synopsis
- noFilters :: FilteringSpec params
- mkFilteringSpec :: [SomeFilter params] -> FilteringSpec params
- (?/) :: forall name params filter. MkSomeFilter name filter params params => NameLabel name -> filter -> SomeFilter params
- (?/=) :: forall name params filter. MkSomeFilter name (FilterMatching filter) params params => NameLabel name -> filter -> SomeFilter params
- (?/<) :: forall name params filter. MkSomeFilter name (FilterComparing filter) params params => NameLabel name -> filter -> SomeFilter params
- (?/>) :: forall name params filter. MkSomeFilter name (FilterComparing filter) params params => NameLabel name -> filter -> SomeFilter params
- (?/<=) :: forall name params filter. MkSomeFilter name (FilterComparing filter) params params => NameLabel name -> filter -> SomeFilter params
- (?/>=) :: forall name params filter. MkSomeFilter name (FilterComparing filter) params params => NameLabel name -> filter -> SomeFilter params
- (?/~) :: forall name filter' params filter. (MkSomeFilter name filter' params params, Coercible filter filter') => NameLabel name -> filter -> SomeFilter params
- textLike :: forall name params text. (MkSomeFilter name (FilterLike text) params params, HasCallStack) => NameLabel name -> LText -> SomeFilter params
- textILike :: forall name params text. (MkSomeFilter name (FilterLike text) params params, HasCallStack) => NameLabel name -> LText -> SomeFilter params
- textContains :: forall name params text. MkSomeFilter name (FilterLike text) params params => NameLabel name -> Text -> SomeFilter params
- textIContains :: forall name params text. MkSomeFilter name (FilterLike text) params params => NameLabel name -> Text -> SomeFilter params
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 |
def :: FilteringSpec params # |