Я пытаюсь вставить, если не существует, я нашел этот пост для 1.0.1, 2.0.
Я нашел фрагмент, используя транзакцию в документы 3.0.0
val a = (for {
ns <- coffees.filter(_.name.startsWith("ESPRESSO")).map(_.name).result
_ <- DBIO.seq(ns.map(n => coffees.filter(_.name === n).delete): _*)
} yield ()).transactionally
val f: Future[Unit] = db.run(a)
Я изо всех сил пытаюсь написать логику из вставки, если она не существует с этой структурой. Я новичок в Slick и имею небольшой опыт работы с Scala. Это моя попытка сделать вставку, если она не существует за пределами транзакции...
val result: Future[Boolean] = db.run(products.filter(_.name==="foo").exists.result)
result.map { exists =>
if (!exists) {
products += Product(
None,
productName,
productPrice
)
}
}
Но как поместить это в блок транзакций? Это самое дальнее, что я могу:
val a = (for {
exists <- products.filter(_.name==="foo").exists.result
//???
// _ <- DBIO.seq(ns.map(n => coffees.filter(_.name === n).delete): _*)
} yield ()).transactionally
Заранее спасибо