package derived
import reactivemongo.bson.{derived, BSONDocumentHandler} sealed trait Foo case class Bar(i: Int, s: String) extends Foo case class Baz(b: Boolean) extends Foo object Foo { implicit val codec: BSONDocumentHandler[Foo] = derived.codec }
- Source
- package.scala
Linear Supertypes
Ordering
- Alphabetic
- By Inheritance
Inherited
- derived
- AnyRef
- Any
- Hide All
- Show All
Visibility
- Public
- All
Type Members
-
trait
DerivedDecoder
[A0, A] extends BSONDocumentReader[A]
- A0
Phantom type keeping track of the original type to derive a decoder for
- A
Decoded type
- Annotations
- @implicitNotFound( ... )
- trait DerivedDecoderLowPriority extends AnyRef
-
trait
DerivedEncoder
[A] extends BSONDocumentWriter[A]
- Annotations
- @implicitNotFound( ... )
- trait DerivedEncoderLowPriority extends AnyRef
Value Members
- def codec[A](implicit decoder: Lazy[DerivedDecoder[_, A]], encoder: Lazy[DerivedEncoder[A]]): BSONDocumentHandler[A]
- def decoder[A](implicit decoder: Lazy[DerivedDecoder[_, A]]): BSONDocumentReader[A]
- def encoder[A](implicit encoder: Lazy[DerivedEncoder[A]]): BSONDocumentWriter[A]
-
object
DerivedDecoder
extends DerivedDecoderLowPriority
As usual the derivation process is as follows:
As usual the derivation process is as follows:
- let shapeless represent our type A in terms of Coproduct (if it is a sealed trait) or HList (if it is a case class) ;
- define how to decode Coproducts and HLists using implicit definitions
- object DerivedEncoder extends DerivedEncoderLowPriority