See an example here: https://github.com/vietj/reactive-pg-client
// Pool options
PgPoolOptions options = new PgPoolOptions()
.setPort(5432)
.setHost("the-host")
.setDatabase("the-db")
.setUser("user")
.setPassword("secret")
.setMaxSize(5);
// Create the client pool
PgPool client = PgClient.pool(options);
// A simple query
client.query("SELECT * FROM users WHERE id='julien'", ar -> {
if (ar.succeeded()) {
PgResult<Row> result = ar.result();
System.out.println("Got " + result.size() + " results ");
} else {
System.out.println("Failure: " + ar.cause().getMessage());
}
// Now close the pool
client.close();
});
How does one get a Future out of this? Ideally, we'd be able to write code along the lines of this:
val f: Future[...] = clientF.query("select ...")
You could try to use promise:
import scala.concurrent._
def fetch(query: String): Future[PgRowSet] = {
val options = new PgPoolOptions()
.setPort(5432)
.setHost("the-host")
.setDatabase("the-db")
.setUser("user")
.setPassword("secret")
.setMaxSize(5)
val client = PgClient.pool(options)
val p = Promise[PgRowSet]()
client.query(query, ar => {
if (ar.succeeded) {
p.success(ar.result()) //resolve promise as sucessful
} else {
p.failure(ar.cause()) //reject promise
}
client.close
})
p.future
}
Collected from the Internet
Please contact [email protected] to delete if infringement.
Comments