acolyte.reactivemongo

Property

case class Property(name: String) extends Product with Serializable

Extractor for BSON property, allowing partial and un-ordered match by name. Rich match syntax ~(Property(name), ...) requires use of http://acolyte.eu.org/scalac-plugin.html

import reactivemongo.bson.{ BSONInteger, BSONString }
import acolyte.reactivemongo.{ RequestBody, Property, & }

val EmailXtr = Property("email") // Without scalac plugin

request match {
  case RequestBody("db.col", ~(Property("email"), BSONString(e))) =>
    // Request on db.col with an "email" string property,
    // anywhere in properties (possibly with others which are ignored there),
    // with `e` bound to extracted string value.
    resultA

  case RequestBody("db.col", EmailXtr(BSONString(e))) =>
    // Request on db.col with an "email" string property,
    // anywhere in properties (possibly with others which are ignored there),
    // with `e` bound to extracted string value.
    resultB // similar to case resultA without scalac plugin

  case RequestBody("db.col", ~(Property("name"), BSONString("eman"))) =>
    // Request on db.col with an "name" string property with "eman" as value,
    // anywhere in properties (possibly with others which are ignored there).
    resultC

  case RequestBody(colName,
    ~(Property("age"), BSONInteger(age)) &
    ~(Property("email"), BSONString(v))) =>
    // Request on any collection, with an "age" integer property
    // and an "email" string property, possibly not in this order.
    resultD

  case RequestBody(colName,
    ~(Property("age"), ValueDocument(
      ~(Property("$gt"), BSONInteger(minAge)))) &
    ~(Property("email"), BSONString("[email protected]"))) =>
    // Request on any collection, with an "age" property with itself
    // a operator property "$gt" having an integer value, and an "email"
    // property (at the same level as age), without order constraint.
    resultE

}
See also

ValueDocument

&

Linear Supertypes
Serializable, Serializable, Product, Equals, AnyRef, Any
Ordering
  1. Alphabetic
  2. By inheritance
Inherited
  1. Property
  2. Serializable
  3. Serializable
  4. Product
  5. Equals
  6. AnyRef
  7. Any
  1. Hide All
  2. Show all
Learn more about member selection
Visibility
  1. Public
  2. All

Instance Constructors

  1. new Property(name: String)

Value Members

  1. final def !=(arg0: AnyRef): Boolean

    Definition Classes
    AnyRef
  2. final def !=(arg0: Any): Boolean

    Definition Classes
    Any
  3. final def ##(): Int

    Definition Classes
    AnyRef → Any
  4. final def ==(arg0: AnyRef): Boolean

    Definition Classes
    AnyRef
  5. final def ==(arg0: Any): Boolean

    Definition Classes
    Any
  6. final def asInstanceOf[T0]: T0

    Definition Classes
    Any
  7. def clone(): AnyRef

    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  8. final def eq(arg0: AnyRef): Boolean

    Definition Classes
    AnyRef
  9. def finalize(): Unit

    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( classOf[java.lang.Throwable] )
  10. final def getClass(): Class[_]

    Definition Classes
    AnyRef → Any
  11. final def isInstanceOf[T0]: Boolean

    Definition Classes
    Any
  12. val name: String

  13. final def ne(arg0: AnyRef): Boolean

    Definition Classes
    AnyRef
  14. final def notify(): Unit

    Definition Classes
    AnyRef
  15. final def notifyAll(): Unit

    Definition Classes
    AnyRef
  16. final def synchronized[T0](arg0: ⇒ T0): T0

    Definition Classes
    AnyRef
  17. def unapply(properties: List[(String, BSONValue)]): Option[BSONValue]

  18. final def wait(): Unit

    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  19. final def wait(arg0: Long, arg1: Int): Unit

    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  20. final def wait(arg0: Long): Unit

    Definition Classes
    AnyRef
    Annotations
    @throws( ... )

Inherited from Serializable

Inherited from Serializable

Inherited from Product

Inherited from Equals

Inherited from AnyRef

Inherited from Any

Ungrouped