我有一个查询,我有条件地根据计数和偏移参数的存在与否进行增强。
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 }
}
与这种方法相比,我很好奇是否有更简洁的方法来编写此方法。
请说。