Есть таблица с ключом, значениями.
Есть еще одна таблица с автоматическим увеличением PK.
Возьмите значение для ключа из первой таблицы. Если нет, вставьте и
вернуть значение по умолчанию.
Запросить другую таблицу на его основе.
Возвращает отфильтрованный результат и значение.
Чтобы я мог попробовать:
def lastLogs(limit: Long = 666): Future[(Long, Seq[VLogEntry])] = {
val q: DBIO[(Long, Seq[VLogEntry])] = {
for {
existing <- kvTable.filter(_.key === "log").result.headOption
conf = existing getOrElse KV(key = "log", value = "0")
last = conf.value.toLong
rds = vLogTable.filter(_.id > last).take(limit).result
_ <- kvTable.insertOrUpdate(conf)
} yield {
(last, rds)
}
}
db.run(q)
}
Это дает ошибку компиляции:
found : HipDAO.this.domain.dbConfig.profile.StreamingProfileAction[Seq[HipDAO.this.domain.VLogTable ...
required: Seq[db.types.Types.VLogEntry]
В Slick 2 я мог бы вызвать список или привести к запросам в сессии.
Как мне это сделать в Slick 3.