In slick we can use
query.filter( m => (m.state === state1 && m.status === status1) || (m.state === state2 && m.status == status2))
for an "OR" condition in where clause. However my requirement is I have "OR" conditions in a list (passed by user as part of URL). Conditions list includes tuples of state and status like
List[(state1, status1),(state2, status2),(state3, status3)]
So what I wanted was to either be able to build the || statement inside of filter so that I can use each of the conditions from the list to generate the query but I am not sure how to achieve that. Or if there is something like
query.applyOrFilters.orFilter(condition1).orFilter(condition2)
which will actually do condition1 OR condition2 on query object. Is it possible with Slick or with for comprehensions as of now ?
While playing around with it, I finally found a way to do it:-
query.filter {
m => conditions.map(n => m._13 === n._1 && m._14 === n._2).reduceLeft(_ || _)
}
where conditions
is of the form List[(String,String)]
, m._13
maps to state and m._14
maps to status.
Hopefully this will help someone trying out same thing.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With