You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

31 lines
916 B

3 years ago
  1. package wow.doge.http4sdemo
  2. import monix.bio.IO
  3. import monix.bio.Task
  4. import monix.reactive.Observable
  5. import slick.dbio.DBIOAction
  6. import slick.dbio.NoStream
  7. import slick.dbio.Streaming
  8. import slick.jdbc.JdbcBackend.DatabaseDef
  9. package object implicits {
  10. implicit class DatabaseDefExt(private val db: DatabaseDef) extends AnyVal {
  11. def runL[R](a: DBIOAction[R, NoStream, Nothing]) =
  12. Task.deferFuture(db.run(a))
  13. def streamO[T](a: DBIOAction[_, Streaming[T], Nothing]) =
  14. Observable.fromReactivePublisher(db.stream(a))
  15. }
  16. implicit final class MonixEvalTaskExt[T](private val task: monix.eval.Task[T])
  17. extends AnyVal {
  18. def toIO = IO.deferAction(implicit s => IO.from(task))
  19. }
  20. implicit final class MonixBioTaskExt[T](private val task: monix.bio.Task[T])
  21. extends AnyVal {
  22. def toTask =
  23. monix.eval.Task.deferAction(implicit s => monix.eval.Task.from(task))
  24. }
  25. }