カウントおよびオフセットパラメータの有無に応じて条件付きで拡張しているクエリがあります。
val retrieveCustomer: (Option[String], Option[Int], Option[Int]) => List[Customer] = { ( customerId : Option[String], count : Option[Int], offset : Option[Int] ) =>
val initialQ: Query[CustomerTable.type, Customer] = customerId.map( c => CustomerTable.where(_.id === c) ).getOrElse( CustomerTable.map { c => c } )
val qPlusOffset = offset.map ( offset => initialQ.drop(offset) ).getOrElse(initialQ)
val qoPlusLimit = count.map( count => qPlusOffset.take(count) ).getOrElse(qPlusOffset)
DBGlobal.db.withTransaction { qoPlusLimit.list }
}
このアプローチと比較して、これを書くためのより簡潔な方法があるかどうか私は興味があります。
教えてください。