Type class for defining serialisation to and from
DynamoDB's AttributeValue
prop> sealed trait Animal prop> case object Aardvark extends Animal prop> case object Hippopotamus extends Animal prop> case object Zebra extends Animal prop> import org.scalacheck._ prop> implicit val arbitraryAnimal: Arbitrary[Animal] = Arbitrary(Gen.oneOf(List(Aardvark, Hippopotamus, Zebra))) prop> (a: Animal) => | DynamoFormat[Animal].read(DynamoFormat[Animal].write(a)) == Right(a)
>>> DynamoFormat[Animal].write(Zebra).getS Zebra
Type class for defining serialisation to and from DynamoDB's
AttributeValue
Also supports automatic derivation for case classes
and for sealed trait + case object hierarchies
Problems reading a value are detailed
Optional properties are defaulted to None
Custom formats can often be most easily defined using DynamoFormat.coercedXmap, DynamoFormat.xmap or DynamoFormat.iso