AQL string interpolation
Package avokka.arangodb.aql
contains a custom string interpolator to build AQL queries.
import avokka.arangodb.aql._
aql"FOR u IN users RETURN u"
// res0: Query[VObject] = Query(
// query = "FOR u IN users RETURN u",
// bindVars = VObject(values = Map()),
// batchSize = None,
// cache = None,
// count = None,
// memoryLimit = None,
// options = None,
// ttl = None
// )
Use $
to bind variables to query string :
val active: Boolean = true
// active: Boolean = true
aql"FOR u IN users FILTER u.active == $active RETURN u"
// res1: Query[VObject] = Query(
// query = "FOR u IN users FILTER u.active == @_arg0 RETURN u",
// bindVars = VObject(values = Map("_arg0" -> VTrue)),
// batchSize = None,
// cache = None,
// count = None,
// memoryLimit = None,
// options = None,
// ttl = None
// )
Mixing with .bind
:
aql"FOR u IN users FILTER u.active == $active && u.level == @level RETURN u".bind("level", "newbie")
// res2: Query[VObject] = Query(
// query = "FOR u IN users FILTER u.active == @_arg0 && u.level == @level RETURN u",
// bindVars = VObject(
// values = Map("_arg0" -> VTrue, "level" -> VString(value = "newbie"))
// ),
// batchSize = None,
// cache = None,
// count = None,
// memoryLimit = None,
// options = None,
// ttl = None
// )