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 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; } }