From fc9a622252f2dfd1a326b2ef6fa90850c427d370 Mon Sep 17 00:00:00 2001 From: Jose Date: Tue, 3 Jun 2025 22:43:16 +0200 Subject: [PATCH] Add: get groupId by deviceId for dynamic groupId config on startup --- .../miarma/contaminus/common/Constants.java | 1 + .../verticles/DataLayerAPIVerticle.java | 23 ++++++++++++++++++- 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/backend/src/main/java/net/miarma/contaminus/common/Constants.java b/backend/src/main/java/net/miarma/contaminus/common/Constants.java index d86d0a3..ff067a6 100644 --- a/backend/src/main/java/net/miarma/contaminus/common/Constants.java +++ b/backend/src/main/java/net/miarma/contaminus/common/Constants.java @@ -22,6 +22,7 @@ public class Constants { public static final String LATEST_VALUES = API_PREFIX + "/groups/:groupId/devices/:deviceId/latest-values"; // GET public static final String POLLUTION_MAP = API_PREFIX + "/groups/:groupId/devices/:deviceId/pollution-map"; // GET public static final String HISTORY = API_PREFIX + "/groups/:groupId/devices/:deviceId/history"; // GET + public static final String DEVICE_GROUP_ID = RAW_API_PREFIX + "/devices/:deviceId/my-group"; // GET public static final String SENSORS = RAW_API_PREFIX + "/groups/:groupId/devices/:deviceId/sensors"; // GET, POST public static final String SENSOR = RAW_API_PREFIX + "/groups/:groupId/devices/:deviceId/sensors/:sensorId"; // GET, PUT diff --git a/backend/src/main/java/net/miarma/contaminus/verticles/DataLayerAPIVerticle.java b/backend/src/main/java/net/miarma/contaminus/verticles/DataLayerAPIVerticle.java index 30152ac..037a6cd 100644 --- a/backend/src/main/java/net/miarma/contaminus/verticles/DataLayerAPIVerticle.java +++ b/backend/src/main/java/net/miarma/contaminus/verticles/DataLayerAPIVerticle.java @@ -116,7 +116,8 @@ public class DataLayerAPIVerticle extends AbstractVerticle { router.route(HttpMethod.GET, Constants.DEVICE).handler(this::getDeviceById); router.route(HttpMethod.POST, Constants.DEVICES).handler(this::addDevice); router.route(HttpMethod.PUT, Constants.DEVICE).handler(this::updateDevice); - + router.route(HttpMethod.GET, Constants.DEVICE_GROUP_ID).handler(this::getDeviceGroupId); + // Sensor Routes router.route(HttpMethod.GET, Constants.SENSORS).handler(this::getAllSensors); router.route(HttpMethod.GET, Constants.SENSOR).handler(this::getSensorById); @@ -247,6 +248,26 @@ public class DataLayerAPIVerticle extends AbstractVerticle { }); } + private void getDeviceGroupId(RoutingContext context) { + String deviceId = context.request().getParam("deviceId"); + + deviceDAO.getById(deviceId) + .onSuccess(device -> { + if (device != null) { + Integer groupId = device.getGroupId(); + SingleJsonResponse response = SingleJsonResponse.of(groupId); + context.response() + .putHeader("content-type", "application/json; charset=utf-8") + .end(gson.toJson(response)); + } else { + context.response().setStatusCode(404).end("Device not found"); + } + }) + .onFailure(err -> { + context.fail(500, err); + }); + } + private void addDevice(RoutingContext context) { JsonObject body = context.body().asJsonObject(); Device device = gson.fromJson(body.toString(), Device.class);