93 lines
3.6 KiB
Java
93 lines
3.6 KiB
Java
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());
|
|
}
|
|
});
|
|
}
|
|
|
|
}
|