Creation of Database class, Handles general queries, still lacking specific query methods

This commit is contained in:
Tina_Azure
2023-03-08 20:21:44 +01:00
parent ffa650341a
commit da76fa6eef
15 changed files with 903 additions and 0 deletions

View 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();
}
}