Я пытаюсь создать собственные преобразователи столбцов базы данных для нового проекта Slick 3. Это довольно легко сделать с помощью MappedColumnType, но вы должны импортировать API-интерфейс драйвера. Для одноразового типа в одном классе DAO это просто. Но я хотел бы использовать свои настраиваемые типы столбцов во всех моих объектах DAO. Мне не удалось построить свой импорт таким образом, чтобы компилятор мог распознать неявные значения.
Вот пример типа библиотеки, которую я хотел бы построить. Он имеет единственный преобразователь, очень похожий на вездесущий преобразователь дат Joda, который можно увидеть во многих примерах Slick 2.
package dao
import java.sql.Date
import data.Timestamp
import play.api.db.slick.{DatabaseConfigProvider, HasDatabaseConfigProvider}
import slick.driver.JdbcProfile
case class StandardConversions(protected val dbConfigProvider: DatabaseConfigProvider)
extends HasDatabaseConfigProvider[JdbcProfile] {
import driver.api._
implicit val timestampColumnType = MappedColumnType.base[Timestamp, Date](
{ data => new Date(data.value) },
{ sql => Timestamp(sql.getTime) }
)
}
В классе DAO я пытаюсь выполнить импорт следующим образом:
val conversions = StandardConversions(dbConfigProvider)
import conversions._
Ошибка компилятора знакома:
could not find implicit value for parameter tt: slick.ast.TypedType[data.Timestamp]
Я в основном застрял в инъекции зависимостей, неявном аду. Кто-нибудь придумал хороший способ сохранить свои пользовательские преобразования в Slick 3? Поделись, пожалуйста.