Skip to content

Instantly share code, notes, and snippets.

View iulianu's full-sized avatar

Iulian Dogariu iulianu

View GitHub Profile
import scala.slick.lifted.CanBeQueryCondition
// optionally filter on a column with a supplied predicate
case class MaybeFilter[X, Y](val query: scala.slick.lifted.Query[X, Y]) {
def filter[T,R:CanBeQueryCondition](data: Option[T])(f: T => X => R) = {
data.map(v => MaybeFilter(query.filter(f(v)))).getOrElse(this)
}
}
// example use case
import java.sql.Date
sealed trait ContextDescription {
def value: String
}
final case class EmailContext(value: String) extends ContextDescription
final case class MobileContext(value: String) extends ContextDescription
// ...
Seq(EmailContext(email), MobileContext(mobile)).
filter(_.value.nonEmpty).
map( context =>
LocalPersonContext(