Skip to content
This repository was archived by the owner on Dec 3, 2019. It is now read-only.
This repository was archived by the owner on Dec 3, 2019. It is now read-only.

Await.result in README example? #239

Open
@fancywriter

Description

@fancywriter

Hi!

I have a few questions about example described in README.md

def main(args: Array[String]) {
    val configuration = URLParser.parse("jdbc:postgresql://localhost:5233/my_database?user=postgres&password=somepassword")
    val connection: Connection = new PostgreSQLConnection(configuration)

    Await.result(connection.connect, 5 seconds)
    val future: Future[QueryResult] = connection.sendQuery("SELECT 0")

    val mapResult: Future[Any] = future.map(queryResult => queryResult.rows match {
      case Some(resultSet) => {
        val row : RowData = resultSet.head
        row(0)
      }
      case None => -1
    }
    )

    val result = Await.result( mapResult, 5 seconds )
    println(result)
    connection.disconnect
  }
  1. Why does the last statement return Future and just ignored? connection.disconnect? Looks like the result is just ignored, and disconnect even not finished before application shutdown. I would add Await.result here, not anywhere else.
  2. Can't we use flatMap instead of two Await.result ?

Something like

val future = for {
  _ <- connection.connect
 queryResult <- connection.sendQuery("SELECT 0")
 answer = extractResultSet(queryResult)
 _ <- connection.disconnect
} yield answer

Await.ready(future,5.seconds)

?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions