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
// )