diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/main/scala/xyz/driver/restquery/query/SearchFilterExpr.scala | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/src/main/scala/xyz/driver/restquery/query/SearchFilterExpr.scala b/src/main/scala/xyz/driver/restquery/query/SearchFilterExpr.scala index 8cbf685..ca631fc 100644 --- a/src/main/scala/xyz/driver/restquery/query/SearchFilterExpr.scala +++ b/src/main/scala/xyz/driver/restquery/query/SearchFilterExpr.scala @@ -1,8 +1,21 @@ package xyz.driver.restquery.query +import xyz.driver.restquery.query.SearchFilterBinaryOperation.Eq +import xyz.driver.restquery.query.SearchFilterExpr.{Atom, Dimension} + sealed trait SearchFilterExpr { def find(p: SearchFilterExpr => Boolean): Option[SearchFilterExpr] def replace(f: PartialFunction[SearchFilterExpr, SearchFilterExpr]): SearchFilterExpr + + def findEqFilter(fieldName: String): Option[SearchFilterExpr] = + findEqFilter(Dimension(None, fieldName)) + + def findEqFilter(dimension: Dimension): Option[SearchFilterExpr] = { + this.find { + case Atom.Binary(`dimension`, Eq, _) => true + case _ => false + } + } } object SearchFilterExpr { |