zkt26/Back-end/src/main/java/com/example/starter/QueryObjects.java

85 lines
2.9 KiB
Java

package com.example.starter;
import io.vertx.sqlclient.Row;
import io.vertx.sqlclient.RowSet;
import io.vertx.sqlclient.Tuple;
import io.vertx.core.json.JsonArray;
import io.vertx.core.json.JsonObject;
import java.time.format.DateTimeFormatter;
import io.vertx.ext.web.RoutingContext;
public class QueryObjects {
private DatabaseService databaseService;
public QueryObjects(DatabaseService dtbS){
this.databaseService = dtbS;
}
public void getObjects(RoutingContext context) {
databaseService.pool
.query("SELECT * FROM weather_objects;")
.execute()
.onFailure(e -> {
System.err.println("Erreur de récupération de la BDD :" + e.getMessage());
context.response()
.setStatusCode(500)
.end(new JsonObject().put("error", "Erreur de récupération de la BDD").encode());
})
.onSuccess(rows -> {
context.response()
.putHeader("content-type", "application/json; charset=UTF-8")
.end(getInfosObjects(rows).encode());
});
}
public void getParticularObject(RoutingContext context) {
String id = context.request().getParam("id");
if (id == null) {
context.response()
.setStatusCode(400)
.end(new JsonObject().put("error", "Paramètre 'id' manquant").encode());
return;
}
databaseService.pool
.preparedQuery("SELECT * FROM weather_objects WHERE id=?")
.execute(Tuple.of(Integer.parseInt(id)))
.onFailure(e -> {
System.err.println("Erreur de récupération de la BDD :" + e.getMessage());
context.response()
.setStatusCode(500)
.end(new JsonObject().put("Erreur", "Erreur de récupération de la BDD").encode());
})
.onSuccess(rows -> {
if (rows.size() == 0) {
context.response()
.setStatusCode(404)
.end(new JsonObject().put("error", "Objet non trouvé").encode());
return;
}
context.response()
.putHeader("content-type", "application/json: charset=UTF-8")
.end(getInfosObjects(rows).encode());
});
}
private JsonArray getInfosObjects(RowSet<Row> rows) {
JsonArray objects = new JsonArray();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd-MM-yyyy HH:mm:ss");
for (Row row : rows) {
JsonObject object = new JsonObject()
.put("id", row.getInteger("id"))
.put("name", row.getString("name"))
.put("description", row.getString("description"))
.put("type", row.getString("type"))
.put("location", row.getString("location"))
.put("last_update", row.getLocalDateTime("last_update").format(formatter))
.put("status", row.getString("status"));
objects.add(object);
}
return objects;
}
}