package com.example.starter; import io.vertx.core.json.JsonObject; import io.vertx.ext.web.RoutingContext; import io.vertx.sqlclient.Tuple; public class QueryDeleteObject { private DatabaseService databaseService; public QueryDeleteObject(DatabaseService dtbS) { this.databaseService = dtbS; } public void deleteObject(RoutingContext context) { JsonObject body = context.body().asJsonObject(); if (body == null) { context.response().setStatusCode(400).end(new JsonObject().put("error", "Requête invalide").encode()); return; } Integer objectId = body.getInteger("object_id"); Integer userId = body.getInteger("requested_by"); if (objectId == null || userId == null) { context.response().setStatusCode(400).end(new JsonObject().put("error", "Champs manquants").encode()); return; } String checkQuery = "SELECT id FROM weather_objects WHERE id = ?"; databaseService.pool.preparedQuery(checkQuery).execute(Tuple.of(objectId), res -> { if (res.failed()) { res.cause().printStackTrace(); context.response().setStatusCode(500) .end(new JsonObject().put("error", "Erreur base de données").encode()); return; } if (res.result().rowCount() == 0) { context.response().setStatusCode(404).end(new JsonObject().put("error", "Objet non trouvé").encode()); return; } String checkDuplicate = "SELECT 1 FROM deletion_requests WHERE object_id = ? AND requested_by = ?"; String insertQuery = "INSERT INTO deletion_requests (object_id, requested_by) VALUES (?, ?)"; databaseService.pool.preparedQuery(insertQuery).execute(Tuple.of(objectId, userId), insertRes -> { if (insertRes.succeeded()) { context.response().setStatusCode(200) .end(new JsonObject().put("message", "Demande envoyée").encode()); } else { insertRes.cause().printStackTrace(); context.response().setStatusCode(500) .end(new JsonObject().put("error", "Erreur insertion").encode()); } }); }); } public void getAllDeletionRequests(RoutingContext context) { String query = "SELECT * FROM deletion_requests"; databaseService.pool.query(query).execute(res -> { if (res.succeeded()) { var results = res.result(); var jsonArray = new io.vertx.core.json.JsonArray(); results.forEach(row -> { JsonObject json = new JsonObject() .put("id", row.getInteger("id")) .put("object_id", row.getInteger("object_id")) .put("requested_by", row.getInteger("requested_by")) .put("requested_at", row.getLocalDateTime("requested_at").toString()); jsonArray.add(json); }); context.response() .putHeader("Content-Type", "application/json") .end(jsonArray.encode()); } else { res.cause().printStackTrace(); context.response().setStatusCode(500) .end(new JsonObject().put("error", "Erreur lors de la récupération des demandes").encode()); } }); } }