2013-05-21 13 views
8

mam klasę sprawy z zakresu Joda Datetime:ReactiveMongo 0,9: Joda Datetime niejawna konwersja do Macros.handler

case DomainPositionData(domain: String, position: Int, change: Option[Int], date:DateTime) 

Próbując wykorzystać makro do generowania czytelnikowi & Scenariusz:

implicit val domPosFormat = Macros.handler[DomainPositionData] 

dostałem:

Implicit org.joda.time.DateTime for 'value date' not found 

Ale nie znalazłem informacji, jak zaimplementować mój własny niejawny konwerter.

Odpowiedz

16

Patrząc na kod źródłowy do existing handlers, można spróbować utworzyć niejawna konwersja takiego (nie testowane):

import org.joda.time.DateTime 

implicit object BSONDateTimeHandler extends BSONHandler[BSONDateTime, DateTime] { 
    def read(time: BSONDateTime) = new DateTime(time.value) 
    def write(jdtime: DateTime) = BSONDateTime(jdtime.getMillis) 
} 
+0

Testowane, działa prawidłowo. –

2

Innym podejściem jest użycie nowego BSONReader & BSONWriter (o 2 parametry wpisać w 0.9):

implicit object DatetimeReader extends BSONReader[BSONDateTime, DateTime]{ 
    def read(bson: BSONDateTime): DateTime = new DateTime(bson.value) 
} 

implicit object DatetimeWriter extends BSONWriter[DateTime, BSONDateTime]{ 
    def write(t: DateTime): BSONDateTime = BSONDateTime(t.getMillis) 
}