newswires/app/db/SearchParams.scala (28 lines of code) (raw):

package db case class SearchParams( text: Option[String], start: Option[String] = None, end: Option[String] = None, keywordIncl: List[String] = Nil, keywordExcl: List[String] = Nil, suppliersIncl: List[String] = Nil, suppliersExcl: List[String] = Nil, categoryCodesIncl: List[String] = Nil, categoryCodesExcl: List[String] = Nil ) { def merge(o: SearchParams): SearchParams = { val mergedText = (text, o.text) match { case (Some(l), Some(r)) => Some(s"$l $r") case _ => text orElse o.text } SearchParams( text = mergedText, keywordIncl = keywordIncl ++ o.keywordIncl, keywordExcl = keywordExcl ++ o.keywordExcl, suppliersIncl = suppliersIncl ++ o.suppliersIncl, suppliersExcl = suppliersExcl ++ o.suppliersExcl, categoryCodesIncl = categoryCodesIncl ++ o.categoryCodesIncl, categoryCodesExcl = categoryCodesExcl ++ o.categoryCodesExcl ) } }