Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
object Db extends Instance (
entities = Set() + Entity[Artist]() + Entity[Genre](),
url = "jdbc:h2:mem:test",
poolSize = 16 // <--
)
Db Вам доступен из любого контекста в Вашем приложении, что освобождает от какой-либо специфики в работе с актёрами. class DbNegotiator extends Actor {
def receive = {
case CreateTasks(asins) =>
Db.transaction {
val existingTasks = Db.query[Task].whereIn("asin", asins).fetch().toStream
// reset the failed generated ones
existingTasks
.filter(_.failure != None)
.filter(_.generated)
.map(_.copy(failure = None, generated = false, outdated = false))
.foreach(Db.save)
// create the new ones
asins.view
.diff(existingTasks.map(_.asin))
.foreach(a => Db.save(Task(_, Db.now())))
}
}
}
// sync:
val artists = Db.query[Artist].fetch()
// async:
future{ Db.query[Artist].fetch() }.foreach{ artists => ... }
SORM. Новый элегантный и масштабируемый ORM фреймворк для Scala