slick - How can I convert Rep[Option[Instant]] to Rep[Option[String]] in scala -


i working scala play 2, slick , postgresql database. 1 of function

def getallcustomerswithaccount: future[seq[customerdetail]] = { val joinexception = {   (customer, account) <- table join accounttable on (_.id === _.id) } yield (customer.id, account.name, account.phone, account.email, customer.status, customer.balance, customer.payable, customer.created, customer.updated)  val result = db.run(joinexception.result) result.map(row => row.map(x => customerdetail(x._1, x._2, x._3, x._4, x._5, x._6, x._7, x._8, x._9))) } 

this code not working. problem created , updated property of customer. customer.created , customer.updated rep[option[instant]] date time. if escape 2 column (customer.created , customer.updated) it's ok.

def getallcustomerswithaccount: future[seq[customerdetail]] = {     val joinexception = {       (customer, account) <- table join accounttable on (_.id === _.id)     } yield (customer.id, account.name, account.phone, account.email, customer.status, customer.balance, customer.payable)     val result = db.run(joinexception.result)     result.map(row => row.map(x => customerdetail(x._1, x._2, x._3, x._4, x._5, x._6, x._7))) } 

this code working fine. want convert rep[option[instant]] rep[option[string]]. how can this?

slick requires mapping custom types known jdbc types. provide implicit mapping slick datetime timestamp or instant timestamp in case. helps slickto understand custom types in terms of native database supported types.

implicit def jodatimemapping: basecolumntype[datetime] = mappedcolumntype.base[datetime, timestamp]( datetime => new timestamp(datetime.getmillis), timestamp => new datetime(timestamp.gettime)) 

above implicit helps slick convert datetime timestamp , vice versa.

in case of instant type

assuming instant wrapper around datetime

case class instant(time: datetime)  implicit def instantmapping: basecolumntype[instant] = mappedcolumntype.base[instant, timestamp]( instant => new timestamp(instant.time.getmillis), timestamp => instant(new datetime(timestamp.gettime))) 

slick implicit mapping java.time.instant

import java.sql.timestamp  implicit def instantmapping: basecolumntype[instant] = mappedcolumntype.base[instant, timestamp]( instant => new timestamp(instant.toepochmilli), timestamp => instant.ofepochmilli(timestamp.gettime)) 

Comments

Popular posts from this blog

serialization - Convert Any type in scala to Array[Byte] and back -

matplotlib support failed in PyCharm on OSX -

python - Matplotlib: TypeError: 'AxesSubplot' object is not callable -