diff --git a/src/main/java/com/hiveops/aria/controller/DevicePostureController.java b/src/main/java/com/hiveops/aria/controller/DevicePostureController.java index 9b9e57d..30c2811 100644 --- a/src/main/java/com/hiveops/aria/controller/DevicePostureController.java +++ b/src/main/java/com/hiveops/aria/controller/DevicePostureController.java @@ -66,7 +66,7 @@ public class DevicePostureController { @GetMapping("/{deviceId}") @PreAuthorize("hasAnyRole('MSP_ADMIN','BCOS_ADMIN')") public ResponseEntity getPosture(@PathVariable Long deviceId) { - return postureRepository.findById(deviceId) + return postureRepository.findByDeviceId(deviceId) .map(ResponseEntity::ok) .orElse(ResponseEntity.notFound().build()); } diff --git a/src/main/java/com/hiveops/aria/entity/DeviceSecurityPosture.java b/src/main/java/com/hiveops/aria/entity/DeviceSecurityPosture.java index dc3cf3a..3742cc8 100644 --- a/src/main/java/com/hiveops/aria/entity/DeviceSecurityPosture.java +++ b/src/main/java/com/hiveops/aria/entity/DeviceSecurityPosture.java @@ -15,6 +15,10 @@ import java.time.Instant; public class DeviceSecurityPosture { @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "id") + private Long id; + @Column(name = "device_id") private Long deviceId; diff --git a/src/main/java/com/hiveops/aria/repository/DeviceSecurityPostureRepository.java b/src/main/java/com/hiveops/aria/repository/DeviceSecurityPostureRepository.java index cc04887..10b17e0 100644 --- a/src/main/java/com/hiveops/aria/repository/DeviceSecurityPostureRepository.java +++ b/src/main/java/com/hiveops/aria/repository/DeviceSecurityPostureRepository.java @@ -13,6 +13,8 @@ public interface DeviceSecurityPostureRepository extends JpaRepository findByDeviceAgentId(String deviceAgentId); + Optional findByDeviceId(Long deviceId); + Page findAllByOrderByPostureScoreAsc(Pageable pageable); Page findByPostureScoreLessThanOrderByPostureScoreAsc( diff --git a/src/main/resources/db/migration/V4__add_posture_id_pk.sql b/src/main/resources/db/migration/V4__add_posture_id_pk.sql new file mode 100644 index 0000000..2940332 --- /dev/null +++ b/src/main/resources/db/migration/V4__add_posture_id_pk.sql @@ -0,0 +1,13 @@ +-- device_security_posture used device_id BIGINT as its primary key, +-- requiring callers to supply the numeric device ID. Agents only know +-- their string deviceAgentId, so inserts without a deviceId failed. +-- Add a proper auto-generated id column as the PK; make device_id a +-- nullable unique column (FK concept, populated when known). + +ALTER TABLE device_security_posture DROP CONSTRAINT device_security_posture_pkey; + +ALTER TABLE device_security_posture + ADD COLUMN id BIGSERIAL PRIMARY KEY; + +ALTER TABLE device_security_posture + ADD CONSTRAINT uq_posture_device_id UNIQUE (device_id);