Creation of Database class, Handles general queries, still lacking specific query methods
This commit is contained in:
94
src/main/java/cavecomm/Database.java
Normal file
94
src/main/java/cavecomm/Database.java
Normal file
@ -0,0 +1,94 @@
|
||||
package cavecomm;
|
||||
|
||||
import io.vertx.core.AsyncResult;
|
||||
import io.vertx.core.Future;
|
||||
import io.vertx.core.Vertx;
|
||||
import io.vertx.core.json.JsonArray;
|
||||
import io.vertx.core.json.JsonObject;
|
||||
import io.vertx.ext.web.RoutingContext;
|
||||
import io.vertx.pgclient.PgConnectOptions;
|
||||
import io.vertx.pgclient.PgPool;
|
||||
import io.vertx.sqlclient.PoolOptions;
|
||||
import io.vertx.sqlclient.Row;
|
||||
import io.vertx.sqlclient.RowSet;
|
||||
import io.vertx.sqlclient.SqlClient;
|
||||
|
||||
public class Database {
|
||||
PgConnectOptions connectOptions;
|
||||
SqlClient client;
|
||||
PoolOptions poolOptions;
|
||||
Vertx vertx;
|
||||
|
||||
public Database(Vertx vertx, int port, String host, String database, String user, String password) {
|
||||
this.vertx = vertx;
|
||||
//Sets up the database Connection
|
||||
connectOptions = new PgConnectOptions()
|
||||
.setPort(port)
|
||||
.setHost(host)
|
||||
.setDatabase(database)
|
||||
.setUser(user)
|
||||
.setPassword(password);
|
||||
poolOptions = new PoolOptions();
|
||||
}
|
||||
|
||||
//Executes an SQL query
|
||||
//requires further consideration of the Handling.
|
||||
public void executeQuery(String query)
|
||||
{
|
||||
createClient();
|
||||
client
|
||||
.query(query)
|
||||
.execute(ar -> {
|
||||
if (ar.succeeded()) {
|
||||
RowSet<Row> result = ar.result();
|
||||
//test output
|
||||
for (Row r : result) {
|
||||
|
||||
System.out.println("row: " + r.getString("testcolumn1"));
|
||||
}
|
||||
} else {
|
||||
System.out.println("Failure: " + ar.cause().getMessage());
|
||||
}
|
||||
closeClient();
|
||||
});
|
||||
}
|
||||
|
||||
//Executes an SQL query while delivering a context to handle the data
|
||||
//context output is a JSON
|
||||
public void executeQuery(String query, RoutingContext rc)
|
||||
{
|
||||
createClient();
|
||||
client
|
||||
.query(query)
|
||||
.execute(ar -> {
|
||||
if (ar.succeeded()) {
|
||||
RowSet<Row> result = ar.result();
|
||||
//test output
|
||||
JsonArray jsonArray = new JsonArray();
|
||||
for (Row r : result) {
|
||||
JsonObject jsonRow = new JsonObject();
|
||||
jsonRow.put("testcolumn1", r.getJson("testcolumn1"));
|
||||
jsonRow.put("column2", r.getJson("column2"));
|
||||
jsonArray.add(jsonRow);
|
||||
}
|
||||
//sets the header to json
|
||||
rc.response().putHeader("Content-Type", "application/json; charset=UTF8")
|
||||
.end(jsonArray.encode());
|
||||
|
||||
} else {
|
||||
System.out.println("Failure: " + ar.cause().getMessage());
|
||||
}
|
||||
closeClient();
|
||||
});
|
||||
}
|
||||
private void createClient()
|
||||
{
|
||||
client = PgPool.client(vertx, connectOptions, poolOptions);
|
||||
}
|
||||
private void closeClient()
|
||||
{
|
||||
System.out.println("Client Closing");
|
||||
client.close();
|
||||
}
|
||||
|
||||
}
|
Reference in New Issue
Block a user