Decluttering the GAE Datastore API with Scala
in Software Last modified at:
Working with the Google App Engine Query API means a lot of boilerplate code. In Java there is no way around it.
Here is what a really simple query looks like:
Query q = new Query("Work").setFilter(
CompositeFilterOperator.and(
new FilterPredicate("c", FilterOperator.EQUAL, work.c),
new FilterPredicate("m", FilterOperator.EQUAL, work.m),
new FilterPredicate("digitPos", FilterOperator.EQUAL, work.digitPos)
)
)
Fortunately in Scala we can remove the clutter by adding imports and defining an implicit conversion:
import FilterOperator._
import CompositeFilterOperator._
implicit def tuple2FilterPredicate(x: (String, FilterOperator, Any)): FilterPredicate = {
new FilterPredicate(x._1, x._2, x._3)
}
Which makes the API look much more like MongoDB :)
val q = new Query("Work").setFilter {
and (
("c", EQUAL, work.c),
("m", EQUAL, work.m),
("digitPos", EQUAL, work.digitPos)
)
}