Advertisement
Guest User

Untitled

a guest
Jun 26th, 2019
115
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.14 KB | None | 0 0
  1. object Server extends IOApp {
  2. type F[A] = IO[A]
  3.  
  4. override def run(args: List[String]): IO[ExitCode] =
  5. for {
  6. _ <- {
  7. val app = {
  8. val xa = Transactor.fromDriverManager[F](
  9. "org.postgresql.Driver", "jdbc:postgresql://localhost:5432/postgres", "postgres", "")
  10. val betRepo = new AsyncBetRepository[F](xa)
  11. //...
  12. }
  13.  
  14. BlazeServerBuilder[F]
  15. .bindHttp(8080, "localhost")
  16. .withHttpApp(app)
  17. .serve
  18. .compile
  19. .drain
  20. }
  21. } yield ExitCode.Error
  22. }
  23.  
  24. class AsyncBetRepository[F[_] : Async ](val xa: Transactor[F]) extends BetRepository[F] {
  25.  
  26. import BetSQL._
  27.  
  28. override def create(bet: Bet): F[Bet] =
  29. insert(bet).withUniqueGeneratedKeys[UUID]("id").map(betId => bet.copy(betId = betId.some)).transact(xa)
  30. }
  31.  
  32. private object BetSQL {
  33. def insert(bet: Bet): Update0 =
  34. sql"""
  35. INSERT INTO bet (home, away, stake, betType) VALUES (${bet.home}, ${bet.away}, ${bet.stake}, ${bet.betType})
  36. """.update
  37.  
  38. }
  39.  
  40. case class Bet(
  41. betId: Option[UUID],
  42. home: String,
  43. away: String,
  44. stake: BigDecimal,
  45. betType: Int)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement